
#include "Engine/common.h"
#include "Engine/uimgr.h"
#include "Engine/ControlDef.h"
#include "DNF定义.h"
#include "DNF对象定义.h"
#include "strid.h"
#include "设置模块.h"
#include "AppUI.h"

/*
设置模块设计概述
设置一方面为了支持存档功能，另一方面希望对UI重置进行简化。完整的设想是，给
每个设置项都提供足够的信息，当需要在某个控件表示设置项时，取出此种控件所需
的信息，对此控件初始化，然后应用设置。
比如强化等级一项，关联了0-20共21个选项，当前设置是10。如果控件A想用来处理
强化等级，而且类型是DropList，就变成了有21个下拉选项的DropList，并且当前
选中的是文本为10的项。同理，如果只有2个选项，既可以用CheckBox展示，也可以
用DropList展示。这样可以简化控件初始化，或是同一控件用作不同功能时可以快速
切换。
但是这个设计实际有问题，控件有很多不同类型，设置项也有不同类型，根本没法用
通用的方式处理，所以最后只支持了一部分。

设置分成Index和Value两种，大部分情况都要限制用户输入，使用Index值。也有少量
不确定的情况需要用户直接输入，使用Value。
直接在存档记录每个Index对应的文本会很麻烦，加载时需要先确定设置项对应的控件
类型，再对其提供的所有文本进行对比，最终转换成Index。不如统一使用Index，缺点
是可读性会很差，容易受到版本变更影响。
Index类型的设置项，重点优化了DropList和CheckBox的UI操作，其余仅用作存档，UI
操作需另行处理。（按钮组视为Radio，用于装备选择，基于Index；SpListBox用于词条
多选，也基于Index，实现方式略有不同）
Value类型的设置项，重点优化了Edit的UI操作，其余仅用作存档，UI操作需自行处理。
（尽管是Edit，但只能输入数字，只有Buff、补正和技能次数需要输入；Slider是Value
类型，用于辟邪玉调整）

职业对设置项的影响巨大，为了避免每个职业都定义一份设置项，决定所有职业复用同一
设置项，提供职业专属标记进行区分。如果职业共用的设置项涉及下拉列表项，还会提供
一份职业过滤信息，所有下拉项都放在一起，由职业过滤信息区分归属。

*/

struct DNF设置项描述 
{
	//可以只定义设置项但不初始化，存档使用时Valid为FALSE则跳过
	BOOL Valid;
	int Cur;
	
	DNF设置项ID Id;
	WCHAR* Name;
	BOOL IndexType;
	
	//允许ItemNum>0，但ItemList为NULL的情况
	//如果硬要给DropList重置，将会以Index生成Item
	int ItemNum;
	WCHAR** ItemList;
	int* IconList;
	ImageRType* IconType;
	int DefIndex;

	//默认情况下，JobFilterInfo和JobSpecialFlag为NULL
	//表示所有ItemInfo均可用，所有职业通用
	struct JobFilterDesc
	{
		int StartIndex;
		int ItemNum;
	};
	JobFilterDesc* JobFilterInfo;
	char* JobSpecialFlag;

	//小于0时取整显示，否则视为百分数，乘100后四舍五入，保留1~9位小数显示
	int RoundNum;
	float DefValue;

	DNF设置项描述()
	{
		Valid=FALSE;
		Cur=0;
	}

	void InitIndexEntry(DNF设置项ID Id,WCHAR* Name,int ItemNum,int DefIndex=0)
	{
		this->Id=Id;
		this->Name=wstrdup(Name);
		this->IndexType=TRUE;

		this->ItemNum=ItemNum;
		//填入默认值可以在存档丢失的情况下继续运行
		this->DefIndex=DefIndex;
		ItemList=NULL;
		IconList=NULL;
		IconType=NULL;
		if (ItemNum!=0)
		{
			ItemList=new WCHAR*[ItemNum];
			IconList=new int[ItemNum];
			IconType=new ImageRType[ItemNum];
			for (int i=0;i<ItemNum;i++)
			{
				ItemList[i]=NULL;
				IconList[i]=-1;
				IconType[i]=IT_None;
			}
		}

		DefValue=0.0f;
		RoundNum=0;
		JobFilterInfo=NULL;
		JobSpecialFlag=NULL;
		Valid=TRUE;
	}

	void InitValueEntry(DNF设置项ID Id,WCHAR* Name,int RoundNum,float DefValue=0.0f)
	{
		this->Id=Id;
		this->Name=wstrdup(Name);
		this->IndexType=FALSE;

		this->DefValue=DefValue;
		if (RoundNum>7)	//受float精度影响，实际限制到保留7位
			RoundNum=7;
		this->RoundNum=RoundNum;

		DefIndex=0;
		ItemNum=0;
		ItemList=NULL;
		IconList=NULL;
		IconType=NULL;
		JobFilterInfo=NULL;
		JobSpecialFlag=NULL;
		Valid=TRUE;
	}

	void UninitEntry()
	{
		delete[] Name;
		for (int i=0;i<Cur;i++)
			delete[] ItemList[i];
		if (ItemNum!=0)
		{
			delete[] ItemList;
			delete[] IconList;
			delete[] IconType;
		}
		if (JobFilterInfo!=NULL)
			delete[] JobFilterInfo;
		if (JobSpecialFlag!=NULL)
			delete[] JobSpecialFlag;
	}

	void AddItemInfo(WCHAR* Value)
	{
		//经常有复用同一DropList的情况，需要绑定Item的Text
		//其余控件不支持此操作，忽略
		ItemList[Cur]=wstrdup(Value);
		Cur++;
	}

	//图标式DropList使用较少，而且一般不会堆数量，不提供批量操作
	void AddItemIconInfo(WCHAR* Value,int IconResId,ImageRType Type=IT_Bitmap)
	{
		ItemList[Cur]=wstrdup(Value);
		IconList[Cur]=IconResId;
		IconType[Cur]=Type;
		Cur++;
	}

	template<typename T>
	void AddItemInfoBatch(WCHAR* FmtText,T Begin,T Step,int BatchNum)
	{
		//类型为int时FmtText为%d，向下取整
		//类型为float时FmtText一般为%.1f，四舍五入
		//int和float的内存表示方式不同，swprintf无法识别类型，不能混用
		WCHAR Buf[256];
		for (int i=0;i<BatchNum;i++)
		{
			swprintf(Buf,FmtText,(T)Begin);
			Begin+=Step;
			ItemList[Cur]=wstrdup(Buf);
			Cur++;
		}
	}

	void SetJobSpecialFlag(int JobIndex)
	{
		//有些设置是职业专属的，加载和保存时可忽略
		//JobSpecialFlag为NULL时表示是通用选项
		if (JobSpecialFlag==NULL)
		{
			JobSpecialFlag=new char[职业总数];
			for (int i=0;i<职业总数;i++)
				JobSpecialFlag[i]=FALSE;
		}
		JobSpecialFlag[JobIndex]=TRUE;
	}

	void SetJobFilterInfo(int JobIndex,int StartIndex,int ItemNum)
	{
		//职业过滤信息用于同一个选项内，不同职业对应内容不同的情况
		//比如时装上衣的技能，白金徽章的技能，五一称号附魔的技能
		//最普遍的用法是用于同一技能槽，不同职业的等级范围不同
		if (JobFilterInfo==NULL)
		{
			JobFilterInfo=new JobFilterDesc[职业总数];
			for (int i=0;i<职业总数;i++)
			{
				JobFilterInfo[i].StartIndex=-1;
				JobFilterInfo[i].ItemNum=0;
			}
		}
		JobFilterInfo[JobIndex].StartIndex=StartIndex;
		JobFilterInfo[JobIndex].ItemNum=ItemNum;
	}
};

//每项二选一使用，不能混用（必要时可换用struct）
struct DNF设置项
{
	union
	{
		int Index;
		float Value;
	};
	int ChangeState;	//0-未改变 1-改变 2-改变但已处理
};
	
DNF设置项描述 DNF设置项数据库[DNF设置项总数];
DNF设置项 DNF设置缓存[DNF设置项总数];

void ResetDropList(int SettingIndex,int CtrlId,int PageId)
{
	DNF设置项描述* 目标项=&DNF设置项数据库[SettingIndex];
	if (目标项->ItemNum!=0)
	{
		CDropList* CtrlDropList=EasyFindControl<CDropList>(PageId,CtrlId);	
		//ClearItem()和后续SetSelect()都会调用控件绑定的回调函数，注意判断状态，不要重复更新
		CtrlDropList->ClearItem();
		int StartIndex=0;
		int ItemNum=目标项->ItemNum;
		//ItemList为空时，以索引生成Item
		if (目标项->ItemList==NULL)
		{
			WCHAR Buf[10];
			for (int i=StartIndex;i<ItemNum;i++)
			{
				swprintf(Buf,L"%d",i);
				CtrlDropList->AppendItem(Buf);
			}
		}
		else
		{
			//如果有职业过滤信息，只取出一部分给DropList设置，Index仍是从0开始
			//加载、保存、选择、缓存，Index均是统一的，唯独索引转换成计算数据时，会根据职业应用不同的数据
			if (目标项->JobFilterInfo!=NULL)
			{
				StartIndex=目标项->JobFilterInfo[CurrentJob].StartIndex;
				ItemNum=目标项->JobFilterInfo[CurrentJob].ItemNum;
			}
			for (int i=StartIndex;i<StartIndex+ItemNum;i++)
			{
				CtrlDropList->AppendItem(目标项->ItemList[i]);
				if (目标项->IconList[i]!=-1)
					CtrlDropList->SetItemIcon(i,EasyLoadImageR(目标项->IconList[i],目标项->IconType[i]));
			}
		}
		if (DNF设置缓存[SettingIndex].Index!=-1)
			CtrlDropList->SetSelect(DNF设置缓存[SettingIndex].Index);
	}
}

void ResetCheckBox(int SettingIndex,int CtrlId,int PageId)
{
	//只有ItemNum==2的特殊情况才能用于CheckBox，此时忽略ItemList，使用Name
	if (DNF设置项数据库[SettingIndex].ItemNum==2)
	{
		CCheckBox* CtrlCheckbox=EasyFindControl<CCheckBox>(PageId,CtrlId);
		if (wcscmp(CtrlCheckbox->GetText(),DNF设置项数据库[SettingIndex].Name)!=0)
			CtrlCheckbox->SetText(DNF设置项数据库[SettingIndex].Name);
		if (DNF设置缓存[SettingIndex].Index==0 || DNF设置缓存[SettingIndex].Index==1)
			CtrlCheckbox->SetCheck(DNF设置缓存[SettingIndex].Index);
	}
}

void ResetEdit(int SettingIndex,int CtrlId,int PageId)
{
	WCHAR Buf[20];
	if (!DNF设置项数据库[SettingIndex].IndexType)
	{
		CEdit* CtrlEdit=EasyFindControl<CEdit>(PageId,CtrlId);
		//RoundNum小于0时取整展示，否则生成0-9的格式化字符串，乘100后四舍五入保留小数展示
		//由UI保证保存到设置的值在合理范围内，这里不再截断
		if (DNF设置项数据库[SettingIndex].RoundNum<0)
		{
			swprintf(Buf,L"%d",(int)DNF设置缓存[SettingIndex].Value);
			CtrlEdit->SetText(Buf);
		}
		else
		{	
			WCHAR FmtStr[5]={'%','.','0','f',0};
			FmtStr[2]+=DNF设置项数据库[SettingIndex].RoundNum;
			swprintf(Buf,FmtStr,DNF设置缓存[SettingIndex].Value*100.0f);
			CtrlEdit->SetText(Buf);
		}
	}
}



//修改必须通过UI操作完成，控件先更新UI状态，然后调用回调函数通知
//如果有相关联的UI变化，需要在回调函数处理好
//（在回调函数中要注意UI_AdjustState的值，避免重置控件内容时引发设置修改）
//UI部分处理妥当后，回调函数调用ChangeSettingByUI()接口修改设置模块的数据
//直接调用ChangeSettingByUI()接口，或直接修改数据，会导致控件状态与实际数据不一致
//此框架不支持数据变化同步至UI（计算结果除外）
//ChangeSettingByUI()仅标记设置发生了变化，不更新计算模块的数据，也不执行计算
//这样设计是因为有的计算模块数据需要多个设置项确定，设置没修改完会得出错误的数据
//（即使要优化，也是用容器记下只有哪些项发生了变更）

//等到所有ChangeSettingByUI()完成以后，调用SubmitSettingChange()提交更改
//其中UpdateSettingToCalcModule()负责更新数据至计算模块，CalcCoreDoCalculation()负责计算
//计算完成后，SubmitSettingChange()会调用UI部分实现的UpdateCalcResult()，更新界面
//控件->EventHandler->多个ChangeSettingByUI->SubmitSettingChange->UpdateCalcResult

//UpdateSettingToCalcModule()遍历找出发生变更的设置项，将用户设置转换成可计算的值，赋予计算模块
//这个函数非常重要，也很庞大复杂，有些是直接赋值，有些是查找对象赋予，有些是将索引传递过去，由计算模块自行处理
//有些值在其他设置不同时，解释完全不同，比如辟邪玉属性，同样是5.0，类型可能为技攻或三速
//有的对象需要多个设置项一同确定，比如修改了雾神武器，还需要星团和记忆等级才能确定武器对象
//此函数假定UI传递的数据总是正确的，读取的设置也是正确的，只做一些简单的合理性调整，不处理极端情况

void UpdateCalcResult();		//AppUI.cpp
void CalcCoreDoCalculation();	//计算模块入口.cpp
void UpdateSettingToCalcModule();	//用户设置转换.cpp

int GetIndexSetting(int SettingIndex)
{
	return DNF设置缓存[SettingIndex].Index;
}

float GetValueSetting(int SettingIndex)
{
	//和ResetEdit()一致起来，如果是百分数，返回值扩大100倍
	if (DNF设置项数据库[SettingIndex].RoundNum<0)
		return DNF设置缓存[SettingIndex].Value;
	else
		return DNF设置缓存[SettingIndex].Value*100.0f;
}

float GetValueSettingRaw(int SettingIndex)
{
	//转换设置给计算模块时必须用原始值，设计大坑
	return DNF设置缓存[SettingIndex].Value;
}

void ChangeSettingByUI_Index(int SettingIndex,int Index)
{
	if (DNF设置缓存[SettingIndex].Index!=Index)
	{
		DNF设置缓存[SettingIndex].Index=Index;
		DNF设置缓存[SettingIndex].ChangeState=1;
	}
}

void ChangeSettingByUI_Value(int SettingIndex,float Value)
{
	if (DNF设置缓存[SettingIndex].Value!=Value)
	{
		//如果是百分数，显示和输入的值扩大了100倍，存储时需要还原
		if (DNF设置项数据库[SettingIndex].RoundNum<0)
			DNF设置缓存[SettingIndex].Value=Value;
		else
			DNF设置缓存[SettingIndex].Value=Value*0.01f;
		DNF设置缓存[SettingIndex].ChangeState=1;
	}
}

int GetSettingChangeState(int SettingIndex)
{
	return DNF设置缓存[SettingIndex].ChangeState;
}

void SetSettingChangeState(int SettingIndex,int State)
{
	DNF设置缓存[SettingIndex].ChangeState=State;
}

WCHAR* GetCurrSelText(int SettingIndex)
{
	int CurSel=DNF设置缓存[SettingIndex].Index;
	DNF设置项描述* 目标项=&DNF设置项数据库[SettingIndex];
	if (目标项->ItemList==NULL)
		return NULL;
	int StartIndex=0;
	if (目标项->JobFilterInfo!=NULL)
		StartIndex=目标项->JobFilterInfo[CurrentJob].StartIndex;
	return 目标项->ItemList[StartIndex+CurSel];
}

void SubmitSettingChange()
{
	UpdateSettingToCalcModule();
	CalcCoreDoCalculation();
	if (!伤害计算结果.Valid)
		伤害计算结果.SetBase();
	UpdateCalcResult();
}

BOOL LoadUserSetting(int CurrentJob)
{
	//仅考虑有限的几种出问题的情况，失败将返回FALSE停在职业选择页面
	WCHAR FileName[MAX_PATH];
	swprintf(FileName,L"Save\\%s.txt",职业名称文本[CurrentJob]);
	HANDLE hFile=CreateFile(FileName,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
	if (hFile==INVALID_HANDLE_VALUE)
		return FALSE;
	DWORD FileSize=GetFileSize(hFile,NULL);
	if (FileSize<100)
	{
		CloseHandle(hFile);
		return FALSE;
	}
	WCHAR* SettingText=new WCHAR[FileSize/2];
	ReadFile(hFile,SettingText,FileSize,&FileSize,NULL);
	CloseHandle(hFile);

	enum ParseState
	{
		StateVersion1,
		StateVersion2,
		StateKey,
		StateValue,
	} State=StateVersion1;

	std::map<WCHAR*,WCHAR*,wstrless_t> SettingRecord;

	int MajorVersion=-1;
	int MinorVersion=-1;

	//跳过BOM，并检查[DNF Calc Va.b]
	int Cur=1;
	int Len=FileSize/2;
	if (memcmp(SettingText+Cur,L"[DNF Calc V",11*sizeof(WCHAR))!=0)
	{
		delete[] SettingText;
		return FALSE;
	}
	Cur+=11;
	//假定存档格式总是正确的，忽略用户擅自修改造成的问题
	//Windows下总以\r\n换行，只判断\r，最后一行也该有\r\n
	//每行总以第一个=分界，前面的是key，后面的是value
	int Pos=Cur;
	WCHAR* Key=NULL;
	WCHAR* Value=NULL;
	while (Cur<Len)
	{
		WCHAR ch=SettingText[Cur];
		if (State==StateVersion1)
		{
			if (ch=='.')
			{
				MajorVersion=ParseIntText(SettingText+Pos,Cur-Pos);
				Pos=Cur+1;	//跳过 .
				State=StateVersion2;
			}
		}
		else if (State==StateVersion2)
		{
			if (ch==']')
			{
				MinorVersion=ParseIntText(SettingText+Pos,Cur-Pos);
				Pos=Cur+3;	//跳过 ]\r\n
				State=StateKey;
			}
		}
		else if (State==StateKey)
		{
			if (ch=='=')
			{
				SettingText[Cur]=0;
				Key=wstrdup(SettingText+Pos);
				Pos=Cur+1;	//跳过 =
				State=StateValue;
			}
		}
		else if (State==StateValue)
		{
			if (ch=='\r')
			{
				SettingText[Cur]=0;
				Value=wstrdup(SettingText+Pos);	//Value可以为空，记录一个空字符串
				SettingRecord.insert(std::make_pair(Key,Value));
				Pos=Cur+2;	//跳过 \r\n
				State=StateKey;
			}
		}
		Cur++;
	}
	delete[] SettingText;

	//以默认值初始化，全部设为未变更状态
	for (int i=0;i<DNF设置项总数;i++)
	{
		if (DNF设置项数据库[i].IndexType)
			DNF设置缓存[i].Index=DNF设置项数据库[i].DefIndex;
		else
			DNF设置缓存[i].Value=DNF设置项数据库[i].DefValue;
		DNF设置缓存[i].ChangeState=0;
	}

	for (int i=0;i<DNF设置项总数;i++)
	{
		if (DNF设置项数据库[i].Valid)
		{
			//为NULL时代表通用设置
			if (DNF设置项数据库[i].JobSpecialFlag!=NULL)
			{
				if (DNF设置项数据库[i].JobSpecialFlag[CurrentJob]==FALSE)
					continue;
			}
			std::map<WCHAR*,WCHAR*,wstrless_t>::iterator it=
				SettingRecord.find(DNF设置项数据库[i].Name);
			if (it!=SettingRecord.end())
			{
				if (DNF设置项数据库[i].IndexType)
					DNF设置缓存[i].Index=ParseIntText(it->second);
				else
					DNF设置缓存[i].Value=ParseFloatText(it->second);			
			}
			//只有Valid的项才会发生变更
			//UserSetting里没有的用[DNF设置项数据库]的默认值
			DNF设置缓存[i].ChangeState=1;
		}
	}

	//如果存档版本和App不一致，需要进行调整
	//这里没有调用SubmitSettingChange()，等UI模块完成初始化再自行调用
	if (MajorVersion!=AppMajorVersion || MinorVersion!=AppMinorVersion)
	{
		
	}

	std::map<WCHAR*,WCHAR*,wstrless_t>::iterator it;
	for (it=SettingRecord.begin();it!=SettingRecord.end();it++)
	{
		delete[] it->first;
		delete[] it->second;
	}
	SettingRecord.clear();
	return TRUE;
}

BOOL SaveUserSetting(int CurrentJob)
{
	int MajorVersion=1;
	int MinorVersion=0;

	//每项32字符足够
	WCHAR* SettingText=new WCHAR[DNF设置项总数*32+1];
	SettingText[0]=0xFEFF;	//BOM
	int Cur=1;
	Cur+=swprintf(SettingText+Cur,L"[DNF Calc V%d.%d]\r\n",MajorVersion,MinorVersion);

	for (int i=0;i<DNF设置项总数;i++)
	{
		if (DNF设置项数据库[i].Valid)
		{
			//为NULL时代表通用设置
			if (DNF设置项数据库[i].JobSpecialFlag!=NULL)
			{
				if (DNF设置项数据库[i].JobSpecialFlag[CurrentJob]==FALSE)
					continue;
			}
			if (DNF设置项数据库[i].IndexType)
				Cur+=swprintf(SettingText+Cur,L"%s=%d\r\n",DNF设置项数据库[i].Name,DNF设置缓存[i].Index);
			else
				Cur+=swprintf(SettingText+Cur,L"%s=%f\r\n",DNF设置项数据库[i].Name,DNF设置缓存[i].Value);
		}
	}

	WCHAR FileName[MAX_PATH];
	swprintf(FileName,L"Save\\%s.txt",职业名称文本[CurrentJob]);
	HANDLE hFile=CreateFile(FileName,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
	if (hFile==INVALID_HANDLE_VALUE)
	{
		delete[] SettingText;
		return FALSE;
	}
	DWORD FileSize=Cur*sizeof(WCHAR);
	WriteFile(hFile,SettingText,FileSize,&FileSize,NULL);
	CloseHandle(hFile);
	delete[] SettingText;
	return TRUE;
}

void UninitSettingDatabase()
{
	for (int i=0;i<DNF设置项总数;i++)
	{
		DNF设置项数据库[i].UninitEntry();
	}
}

void InitSettingDatabase()
{
	//即使加上了职业过滤信息和职业专属标记，现在的设置模块还是有问题
	//默认值没法分职业，需要一次性统计项数分配内存，各个职业都混在一起无法拆分
	//以目前的时间来看，这些优化无能为力了

	//装备UI使用按钮组，这里仅用作存档，不设定具体选项
	DNF设置项数据库[设置_上衣].InitIndexEntry(设置_上衣,L"上衣",部位装备数量[上衣],0);
	DNF设置项数据库[设置_下装].InitIndexEntry(设置_下装,L"下装",部位装备数量[下装],0);
	DNF设置项数据库[设置_护肩].InitIndexEntry(设置_护肩,L"护肩",部位装备数量[护肩],0);
	DNF设置项数据库[设置_腰带].InitIndexEntry(设置_腰带,L"腰带",部位装备数量[腰带],0);
	DNF设置项数据库[设置_鞋子].InitIndexEntry(设置_鞋子,L"鞋子",部位装备数量[鞋子],0);
	DNF设置项数据库[设置_手镯].InitIndexEntry(设置_手镯,L"手镯",部位装备数量[手镯],0);
	DNF设置项数据库[设置_项链].InitIndexEntry(设置_项链,L"项链",部位装备数量[项链],0);
	DNF设置项数据库[设置_戒指].InitIndexEntry(设置_戒指,L"戒指",部位装备数量[戒指],0);
	DNF设置项数据库[设置_左槽].InitIndexEntry(设置_左槽,L"左槽",部位装备数量[左槽],0);
	DNF设置项数据库[设置_右槽].InitIndexEntry(设置_右槽,L"右槽",部位装备数量[右槽],0);
	DNF设置项数据库[设置_耳环].InitIndexEntry(设置_耳环,L"耳环",部位装备数量[耳环],0);
	DNF设置项数据库[设置_武器].InitIndexEntry(设置_武器,L"武器",部位装备数量[武器],0);
	DNF设置项数据库[设置_称号].InitIndexEntry(设置_称号,L"称号",部位装备数量[称号],0);
	DNF设置项数据库[设置_宠物].InitIndexEntry(设置_宠物,L"宠物",部位装备数量[宠物],0);
	DNF设置项数据库[设置_上衣贴膜].InitIndexEntry(设置_上衣贴膜,L"上衣融合",部位装备数量[上衣贴膜],0);
	DNF设置项数据库[设置_下装贴膜].InitIndexEntry(设置_下装贴膜,L"下装融合",部位装备数量[下装贴膜],0);
	DNF设置项数据库[设置_护肩贴膜].InitIndexEntry(设置_护肩贴膜,L"护肩融合",部位装备数量[护肩贴膜],0);
	DNF设置项数据库[设置_腰带贴膜].InitIndexEntry(设置_腰带贴膜,L"腰带融合",部位装备数量[腰带贴膜],0);
	DNF设置项数据库[设置_鞋子贴膜].InitIndexEntry(设置_鞋子贴膜,L"鞋子融合",部位装备数量[鞋子贴膜],0);
	DNF设置项数据库[设置_手镯贴膜].InitIndexEntry(设置_手镯贴膜,L"手镯融合",部位装备数量[手镯贴膜],0);
	DNF设置项数据库[设置_项链贴膜].InitIndexEntry(设置_项链贴膜,L"项链融合",部位装备数量[项链贴膜],0);
	DNF设置项数据库[设置_戒指贴膜].InitIndexEntry(设置_戒指贴膜,L"戒指融合",部位装备数量[戒指贴膜],0);
	DNF设置项数据库[设置_左槽贴膜].InitIndexEntry(设置_左槽贴膜,L"左槽融合",部位装备数量[左槽贴膜],0);
	DNF设置项数据库[设置_右槽贴膜].InitIndexEntry(设置_右槽贴膜,L"右槽融合",部位装备数量[右槽贴膜],0);
	DNF设置项数据库[设置_耳环贴膜].InitIndexEntry(设置_耳环贴膜,L"耳环融合",部位装备数量[耳环贴膜],0);
	DNF设置项数据库[设置_武器贴膜].InitIndexEntry(设置_武器贴膜,L"武器融合",部位装备数量[武器贴膜],0);

	DNF设置项数据库[设置_上衣强化类型].InitIndexEntry(设置_上衣强化类型,L"上衣强化类型",2,1);
	DNF设置项数据库[设置_下装强化类型].InitIndexEntry(设置_下装强化类型,L"下装强化类型",2,1);
	DNF设置项数据库[设置_护肩强化类型].InitIndexEntry(设置_护肩强化类型,L"护肩强化类型",2,1);
	DNF设置项数据库[设置_腰带强化类型].InitIndexEntry(设置_腰带强化类型,L"腰带强化类型",2,1);
	DNF设置项数据库[设置_鞋子强化类型].InitIndexEntry(设置_鞋子强化类型,L"鞋子强化类型",2,1);
	DNF设置项数据库[设置_手镯强化类型].InitIndexEntry(设置_手镯强化类型,L"手镯强化类型",2,1);
	DNF设置项数据库[设置_项链强化类型].InitIndexEntry(设置_项链强化类型,L"项链强化类型",2,1);
	DNF设置项数据库[设置_戒指强化类型].InitIndexEntry(设置_戒指强化类型,L"戒指强化类型",2,1);
	DNF设置项数据库[设置_左槽强化类型].InitIndexEntry(设置_左槽强化类型,L"左槽强化类型",2,1);
	DNF设置项数据库[设置_右槽强化类型].InitIndexEntry(设置_右槽强化类型,L"右槽强化类型",2,1);
	DNF设置项数据库[设置_耳环强化类型].InitIndexEntry(设置_耳环强化类型,L"耳环强化类型",2,1);
	DNF设置项数据库[设置_武器强化类型].InitIndexEntry(设置_武器强化类型,L"武器强化类型",2,1);
	for (int i=设置_上衣强化类型;i<=设置_武器强化类型;i++)
	{
		DNF设置项数据库[i].AddItemInfo(L"强化");
		DNF设置项数据库[i].AddItemInfo(L"增幅");
	}

	DNF设置项数据库[设置_上衣强化等级].InitIndexEntry(设置_上衣强化等级,L"上衣强化等级",21,10);
	DNF设置项数据库[设置_下装强化等级].InitIndexEntry(设置_下装强化等级,L"下装强化等级",21,10);
	DNF设置项数据库[设置_护肩强化等级].InitIndexEntry(设置_护肩强化等级,L"护肩强化等级",21,10);
	DNF设置项数据库[设置_腰带强化等级].InitIndexEntry(设置_腰带强化等级,L"腰带强化等级",21,10);
	DNF设置项数据库[设置_鞋子强化等级].InitIndexEntry(设置_鞋子强化等级,L"鞋子强化等级",21,10);
	DNF设置项数据库[设置_手镯强化等级].InitIndexEntry(设置_手镯强化等级,L"手镯强化等级",21,10);
	DNF设置项数据库[设置_项链强化等级].InitIndexEntry(设置_项链强化等级,L"项链强化等级",21,10);
	DNF设置项数据库[设置_戒指强化等级].InitIndexEntry(设置_戒指强化等级,L"戒指强化等级",21,10);
	DNF设置项数据库[设置_左槽强化等级].InitIndexEntry(设置_左槽强化等级,L"左槽强化等级",21,10);
	DNF设置项数据库[设置_右槽强化等级].InitIndexEntry(设置_右槽强化等级,L"右槽强化等级",21,10);
	DNF设置项数据库[设置_耳环强化等级].InitIndexEntry(设置_耳环强化等级,L"耳环强化等级",21,10);
	DNF设置项数据库[设置_武器强化等级].InitIndexEntry(设置_武器强化等级,L"武器强化等级",21,10);
	for (int i=设置_上衣强化等级;i<=设置_武器强化等级;i++)
		DNF设置项数据库[i].AddItemInfoBatch<int>(L"%d",0,1,21);
	DNF设置项数据库[设置_武器锻造等级].InitIndexEntry(设置_武器锻造等级,L"武器锻造等级",9,8);
	DNF设置项数据库[设置_武器锻造等级].AddItemInfoBatch<int>(L"%d",0,1,9);

	WCHAR* 附魔部位文本[拓展装备部位总数]={L"上衣附魔",L"下装附魔",L"护肩附魔",L"腰带附魔",L"鞋子附魔",
		L"手镯附魔",L"项链附魔",L"戒指附魔",L"左槽附魔",L"右槽附魔",L"耳环附魔",L"武器附魔",L"称号附魔",L"宠物附魔"};
	for (int 部位=0;部位<拓展装备部位总数;部位++)
	{
		int 附魔数量=0;
		for (std::vector<DNF装备对象*>::iterator it=装备对象表[附魔类].begin()+1;it!=装备对象表[附魔类].end();it++)
		{
			DNF装备对象* 对象=*it;
			int 部位标记=1<<部位;
			if ((对象->附魔可用部位&部位标记)!=0)
				附魔数量++;
		}

		int 附魔设置项=设置_上衣附魔+部位;
		DNF设置项数据库[附魔设置项].InitIndexEntry((DNF设置项ID)附魔设置项,附魔部位文本[部位],附魔数量+1,0);
		DNF设置项数据库[附魔设置项].AddItemInfo((装备对象表[附魔类])[0]->名称);	//无
		for (std::vector<DNF装备对象*>::iterator it=装备对象表[附魔类].begin()+1;it!=装备对象表[附魔类].end();it++)
		{
			DNF装备对象* 对象=*it;
			int 部位标记=1<<部位;
			if ((对象->附魔可用部位&部位标记)!=0)
				DNF设置项数据库[附魔设置项].AddItemInfo(对象->名称);	
		}
	}


	//徽章
	auto 设置项添加徽章信息=[](int 设置项索引,WCHAR* 设置项名称,int 最大数量,int 槽位颜色)
	{
		DNF设置项数据库[设置项索引].InitIndexEntry(设置_上衣徽章1,设置项名称,最大数量,0);
		DNF设置项数据库[设置项索引].AddItemInfo(L"无徽章");
		for (std::vector<DNF装备对象*>::iterator it=装备对象表[徽章类].begin()+1;it!=装备对象表[徽章类].end();it++)
		{
			DNF装备对象* 对象=*it;
			if (对象->徽章颜色&槽位颜色)
				DNF设置项数据库[设置项索引].AddItemInfo(对象->名称);
		}
	};

	int 红色槽可用徽章数量=1;	//第一个是无徽章
	int 蓝色槽可用徽章数量=1;	//第一个是无徽章
	int 绿色槽可用徽章数量=1;	//第一个是无徽章
	int 黄色槽可用徽章数量=1;	//第一个是无徽章
	int 彩色槽可用徽章数量=1;	//第一个是无徽章
	for (std::vector<DNF装备对象*>::iterator it=装备对象表[徽章类].begin()+1;it!=装备对象表[徽章类].end();it++)
	{
		DNF装备对象* 对象=*it;
		if (对象->徽章颜色&红色徽章)
			红色槽可用徽章数量++;
		if (对象->徽章颜色&蓝色徽章)
			蓝色槽可用徽章数量++;
		if (对象->徽章颜色&绿色徽章)
			绿色槽可用徽章数量++;
		if (对象->徽章颜色&黄色徽章)
			黄色槽可用徽章数量++;
		if (对象->徽章颜色&(红色徽章|蓝色徽章|绿色徽章|黄色徽章))	//没有白金
			彩色槽可用徽章数量++;
	}
	设置项添加徽章信息(设置_上衣徽章1,L"上衣徽章1",绿色槽可用徽章数量,绿色徽章);
	设置项添加徽章信息(设置_下装徽章1,L"下装徽章1",绿色槽可用徽章数量,绿色徽章);
	设置项添加徽章信息(设置_护肩徽章1,L"护肩徽章1",黄色槽可用徽章数量,黄色徽章);
	设置项添加徽章信息(设置_腰带徽章1,L"腰带徽章1",红色槽可用徽章数量,红色徽章);
	设置项添加徽章信息(设置_鞋子徽章1,L"鞋子徽章1",蓝色槽可用徽章数量,蓝色徽章);
	设置项添加徽章信息(设置_手镯徽章1,L"手镯徽章1",蓝色槽可用徽章数量,蓝色徽章);
	设置项添加徽章信息(设置_项链徽章1,L"项链徽章1",黄色槽可用徽章数量,黄色徽章);
	设置项添加徽章信息(设置_戒指徽章1,L"戒指徽章1",红色槽可用徽章数量,红色徽章);
	设置项添加徽章信息(设置_上衣徽章2,L"上衣徽章2",绿色槽可用徽章数量,绿色徽章);
	设置项添加徽章信息(设置_下装徽章2,L"下装徽章2",绿色槽可用徽章数量,绿色徽章);
	设置项添加徽章信息(设置_护肩徽章2,L"护肩徽章2",黄色槽可用徽章数量,黄色徽章);
	设置项添加徽章信息(设置_腰带徽章2,L"腰带徽章2",红色槽可用徽章数量,红色徽章);
	设置项添加徽章信息(设置_鞋子徽章2,L"鞋子徽章2",蓝色槽可用徽章数量,蓝色徽章);
	设置项添加徽章信息(设置_手镯徽章2,L"手镯徽章2",蓝色槽可用徽章数量,蓝色徽章);
	设置项添加徽章信息(设置_项链徽章2,L"项链徽章2",黄色槽可用徽章数量,黄色徽章);
	设置项添加徽章信息(设置_戒指徽章2,L"戒指徽章2",红色槽可用徽章数量,红色徽章);

	//白金徽章不保存职业信息，初始化时通过职业对象添加，更新至计算模块时使用名称在徽章对象中查找
	//技能与职业有关，职业对象表目前只有加入的职业，没和职业定义对应起来，0是奶妈，1是剑帝
	//注意总数和起始索引是各个职业数量的累加，额外加入[无徽章]和[闪耀的白金徽章]
	WCHAR* 奶妈白金技能[技能数量上限];
	int 奶妈白金技能数=职业对象表[0]->获取白金徽章技能列表(奶妈白金技能);
	WCHAR* 剑帝白金技能[技能数量上限];
	int 剑帝白金技能数=职业对象表[1]->获取白金徽章技能列表(剑帝白金技能);
	DNF设置项数据库[设置_左槽徽章1].InitIndexEntry(设置_左槽徽章1,L"左槽徽章",奶妈白金技能数+2+剑帝白金技能数+2,0);
	DNF设置项数据库[设置_右槽徽章1].InitIndexEntry(设置_右槽徽章1,L"右槽徽章",奶妈白金技能数+2+剑帝白金技能数+2,0);
	for (int j=0;j<2;j++)
	{
		DNF设置项数据库[设置_左槽徽章1+j].AddItemInfo(L"无徽章");
		DNF设置项数据库[设置_左槽徽章1+j].AddItemInfo(L"闪耀的白金徽章");
		for (int i=0;i<奶妈白金技能数;i++)
			DNF设置项数据库[设置_左槽徽章1+j].AddItemInfo(奶妈白金技能[i]);
		DNF设置项数据库[设置_左槽徽章1+j].SetJobFilterInfo(职业对象表[0]->职业,0,奶妈白金技能数+2);
		//DNF设置项数据库[设置_左槽徽章1+j].AddItemInfo(L"复苏之光");
		//DNF设置项数据库[设置_左槽徽章1+j].AddItemInfo(L"新生颂歌");
		//DNF设置项数据库[设置_左槽徽章1+j].AddItemInfo(L"勇气祝福");
		//DNF设置项数据库[设置_左槽徽章1+j].AddItemInfo(L"守护祝福");
		DNF设置项数据库[设置_左槽徽章1+j].AddItemInfo(L"无徽章");
		DNF设置项数据库[设置_左槽徽章1+j].AddItemInfo(L"闪耀的白金徽章");
		for (int i=0;i<剑帝白金技能数;i++)
			DNF设置项数据库[设置_左槽徽章1+j].AddItemInfo(剑帝白金技能[i]);
		//DNF设置项数据库[设置_左槽徽章1+j].AddItemInfo(L"两仪功");
		//DNF设置项数据库[设置_左槽徽章1+j].AddItemInfo(L"五气朝元");
		//DNF设置项数据库[设置_左槽徽章1+j].AddItemInfo(L"三才回轮剑");
		DNF设置项数据库[设置_左槽徽章1+j].SetJobFilterInfo(职业对象表[1]->职业,奶妈白金技能数+2,剑帝白金技能数+2);
	}

	//自定义词条的UI使用多选列表，这里仅用于存档
	//不同类型的自定义可用的词条不一样，只有领域之主才能用全部96条
	DNF设置项数据库[设置_上衣词条1].InitIndexEntry(设置_上衣词条1,L"上衣词条1",96,-1);
	DNF设置项数据库[设置_上衣词条2].InitIndexEntry(设置_上衣词条2,L"上衣词条2",96,-1);
	DNF设置项数据库[设置_上衣词条3].InitIndexEntry(设置_上衣词条3,L"上衣词条3",96,-1);
	DNF设置项数据库[设置_上衣词条4].InitIndexEntry(设置_上衣词条4,L"上衣词条4",96,-1);
	DNF设置项数据库[设置_下装词条1].InitIndexEntry(设置_下装词条1,L"下装词条1",96,-1);
	DNF设置项数据库[设置_下装词条2].InitIndexEntry(设置_下装词条2,L"下装词条2",96,-1);
	DNF设置项数据库[设置_下装词条3].InitIndexEntry(设置_下装词条3,L"下装词条3",96,-1);
	DNF设置项数据库[设置_下装词条4].InitIndexEntry(设置_下装词条4,L"下装词条4",96,-1);
	DNF设置项数据库[设置_护肩词条1].InitIndexEntry(设置_护肩词条1,L"护肩词条1",96,-1);
	DNF设置项数据库[设置_护肩词条2].InitIndexEntry(设置_护肩词条2,L"护肩词条2",96,-1);
	DNF设置项数据库[设置_护肩词条3].InitIndexEntry(设置_护肩词条3,L"护肩词条3",96,-1);
	DNF设置项数据库[设置_护肩词条4].InitIndexEntry(设置_护肩词条4,L"护肩词条4",96,-1);
	DNF设置项数据库[设置_腰带词条1].InitIndexEntry(设置_腰带词条1,L"腰带词条1",96,-1);
	DNF设置项数据库[设置_腰带词条2].InitIndexEntry(设置_腰带词条2,L"腰带词条2",96,-1);
	DNF设置项数据库[设置_腰带词条3].InitIndexEntry(设置_腰带词条3,L"腰带词条3",96,-1);
	DNF设置项数据库[设置_腰带词条4].InitIndexEntry(设置_腰带词条4,L"腰带词条4",96,-1);
	DNF设置项数据库[设置_鞋子词条1].InitIndexEntry(设置_鞋子词条1,L"鞋子词条1",96,-1);
	DNF设置项数据库[设置_鞋子词条2].InitIndexEntry(设置_鞋子词条2,L"鞋子词条2",96,-1);
	DNF设置项数据库[设置_鞋子词条3].InitIndexEntry(设置_鞋子词条3,L"鞋子词条3",96,-1);
	DNF设置项数据库[设置_鞋子词条4].InitIndexEntry(设置_鞋子词条4,L"鞋子词条4",96,-1);
	DNF设置项数据库[设置_手镯词条1].InitIndexEntry(设置_手镯词条1,L"手镯词条1",96,-1);
	DNF设置项数据库[设置_手镯词条2].InitIndexEntry(设置_手镯词条2,L"手镯词条2",96,-1);
	DNF设置项数据库[设置_手镯词条3].InitIndexEntry(设置_手镯词条3,L"手镯词条3",96,-1);
	DNF设置项数据库[设置_手镯词条4].InitIndexEntry(设置_手镯词条4,L"手镯词条4",96,-1);
	DNF设置项数据库[设置_项链词条1].InitIndexEntry(设置_项链词条1,L"项链词条1",96,-1);
	DNF设置项数据库[设置_项链词条2].InitIndexEntry(设置_项链词条2,L"项链词条2",96,-1);
	DNF设置项数据库[设置_项链词条3].InitIndexEntry(设置_项链词条3,L"项链词条3",96,-1);
	DNF设置项数据库[设置_项链词条4].InitIndexEntry(设置_项链词条4,L"项链词条4",96,-1);
	DNF设置项数据库[设置_戒指词条1].InitIndexEntry(设置_戒指词条1,L"戒指词条1",96,-1);
	DNF设置项数据库[设置_戒指词条2].InitIndexEntry(设置_戒指词条2,L"戒指词条2",96,-1);
	DNF设置项数据库[设置_戒指词条3].InitIndexEntry(设置_戒指词条3,L"戒指词条3",96,-1);
	DNF设置项数据库[设置_戒指词条4].InitIndexEntry(设置_戒指词条4,L"戒指词条4",96,-1);
	DNF设置项数据库[设置_左槽词条1].InitIndexEntry(设置_左槽词条1,L"左槽词条1",96,-1);
	DNF设置项数据库[设置_左槽词条2].InitIndexEntry(设置_左槽词条2,L"左槽词条2",96,-1);
	DNF设置项数据库[设置_左槽词条3].InitIndexEntry(设置_左槽词条3,L"左槽词条3",96,-1);
	DNF设置项数据库[设置_左槽词条4].InitIndexEntry(设置_左槽词条4,L"左槽词条4",96,-1);
	DNF设置项数据库[设置_右槽词条1].InitIndexEntry(设置_右槽词条1,L"右槽词条1",96,-1);
	DNF设置项数据库[设置_右槽词条2].InitIndexEntry(设置_右槽词条2,L"右槽词条2",96,-1);
	DNF设置项数据库[设置_右槽词条3].InitIndexEntry(设置_右槽词条3,L"右槽词条3",96,-1);
	DNF设置项数据库[设置_右槽词条4].InitIndexEntry(设置_右槽词条4,L"右槽词条4",96,-1);
	DNF设置项数据库[设置_耳环词条1].InitIndexEntry(设置_耳环词条1,L"耳环词条1",96,-1);
	DNF设置项数据库[设置_耳环词条2].InitIndexEntry(设置_耳环词条2,L"耳环词条2",96,-1);
	DNF设置项数据库[设置_耳环词条3].InitIndexEntry(设置_耳环词条3,L"耳环词条3",96,-1);
	DNF设置项数据库[设置_耳环词条4].InitIndexEntry(设置_耳环词条4,L"耳环词条4",96,-1);
	DNF设置项数据库[设置_武器词条1].InitIndexEntry(设置_武器词条1,L"武器词条1",96,-1);
	DNF设置项数据库[设置_武器词条2].InitIndexEntry(设置_武器词条2,L"武器词条2",96,-1);
	DNF设置项数据库[设置_武器词条3].InitIndexEntry(设置_武器词条3,L"武器词条3",96,-1);
	DNF设置项数据库[设置_武器词条4].InitIndexEntry(设置_武器词条4,L"武器词条4",96,-1);
	DNF设置项数据库[设置_武器融合词条1].InitIndexEntry(设置_武器融合词条1,L"武器融合词条1",80,-1);
	DNF设置项数据库[设置_武器融合词条2].InitIndexEntry(设置_武器融合词条2,L"武器融合词条2",80,-1);
	DNF设置项数据库[设置_武器融合词条3].InitIndexEntry(设置_武器融合词条3,L"武器融合词条3",80,-1);
	DNF设置项数据库[设置_左槽融合词条1].InitIndexEntry(设置_左槽融合词条1,L"左槽融合词条1",44,-1);
	DNF设置项数据库[设置_左槽融合词条2].InitIndexEntry(设置_左槽融合词条2,L"左槽融合词条2",44,-1);
	DNF设置项数据库[设置_左槽融合词条3].InitIndexEntry(设置_左槽融合词条3,L"左槽融合词条3",44,-1);
	DNF设置项数据库[设置_右槽融合词条1].InitIndexEntry(设置_右槽融合词条1,L"右槽融合词条1",44,-1);
	DNF设置项数据库[设置_右槽融合词条2].InitIndexEntry(设置_右槽融合词条2,L"右槽融合词条2",44,-1);
	DNF设置项数据库[设置_右槽融合词条3].InitIndexEntry(设置_右槽融合词条3,L"右槽融合词条3",44,-1);
	DNF设置项数据库[设置_耳环融合词条1].InitIndexEntry(设置_耳环融合词条1,L"耳环融合词条1",44,-1);
	DNF设置项数据库[设置_耳环融合词条2].InitIndexEntry(设置_耳环融合词条2,L"耳环融合词条2",44,-1);
	DNF设置项数据库[设置_耳环融合词条3].InitIndexEntry(设置_耳环融合词条3,L"耳环融合词条3",44,-1);

	//贴膜升级实际对应CheckBox
	DNF设置项数据库[设置_手镯融合升级].InitIndexEntry(设置_手镯融合升级,L"手镯融合升级",2,TRUE);
	DNF设置项数据库[设置_项链融合升级].InitIndexEntry(设置_项链融合升级,L"项链融合升级",2,TRUE);
	DNF设置项数据库[设置_戒指融合升级].InitIndexEntry(设置_戒指融合升级,L"戒指融合升级",2,TRUE);
	DNF设置项数据库[设置_左槽融合升级].InitIndexEntry(设置_左槽融合升级,L"左槽融合升级",2,TRUE);
	DNF设置项数据库[设置_右槽融合升级].InitIndexEntry(设置_右槽融合升级,L"右槽融合升级",2,TRUE);
	DNF设置项数据库[设置_耳环融合升级].InitIndexEntry(设置_耳环融合升级,L"耳环融合升级",2,TRUE);

	//星团没有0级，星团20属性会变化（无论是不是太初），记忆6品质和属性都会变化
	DNF设置项数据库[设置_武器星团等级].InitIndexEntry(设置_武器星团等级,L"武器星团等级",20,0);
	DNF设置项数据库[设置_武器星团等级].AddItemInfoBatch<int>(L"%d",1,1,20);
	DNF设置项数据库[设置_武器梦境等级].InitIndexEntry(设置_武器梦境等级,L"武器梦境等级",6,0);
	DNF设置项数据库[设置_武器梦境等级].AddItemInfoBatch<int>(L"%d",0,1,6);
	DNF设置项数据库[设置_武器记忆等级].InitIndexEntry(设置_武器记忆等级,L"武器记忆等级",7,0);
	DNF设置项数据库[设置_武器记忆等级].AddItemInfoBatch<int>(L"%d",0,1,7);

	DNF设置项数据库[设置_装扮头部品质].InitIndexEntry(设置_装扮头部品质,L"装扮头部品质",4,3);
	DNF设置项数据库[设置_装扮帽子品质].InitIndexEntry(设置_装扮帽子品质,L"装扮帽子品质",4,3);
	DNF设置项数据库[设置_装扮脸部品质].InitIndexEntry(设置_装扮脸部品质,L"装扮脸部品质",4,3);
	DNF设置项数据库[设置_装扮胸部品质].InitIndexEntry(设置_装扮胸部品质,L"装扮胸部品质",4,3);
	DNF设置项数据库[设置_装扮上衣品质].InitIndexEntry(设置_装扮上衣品质,L"装扮上衣品质",4,3);
	DNF设置项数据库[设置_装扮下装品质].InitIndexEntry(设置_装扮下装品质,L"装扮下装品质",4,3);
	DNF设置项数据库[设置_装扮腰部品质].InitIndexEntry(设置_装扮腰部品质,L"装扮腰部品质",4,3);
	DNF设置项数据库[设置_装扮鞋子品质].InitIndexEntry(设置_装扮鞋子品质,L"装扮鞋子品质",4,3);
	for (int i=设置_装扮头部品质;i<=设置_装扮鞋子品质;i++)
	{
		DNF设置项数据库[i].AddItemInfo(L"无");
		DNF设置项数据库[i].AddItemInfo(L"高级");
		DNF设置项数据库[i].AddItemInfo(L"稀有");
		DNF设置项数据库[i].AddItemInfo(L"神器");
	}

	//上衣技能与职业有关，职业对象表目前只有加入的职业，没和职业定义对应起来，0是奶妈，1是剑帝
	//注意总数和起始索引是各个职业数量的累加
	WCHAR* 奶妈上衣技能[技能数量上限];
	int 奶妈上衣技能数=职业对象表[0]->获取装扮上衣技能列表(奶妈上衣技能);
	WCHAR* 剑帝上衣技能[技能数量上限];
	int 剑帝上衣技能数=职业对象表[1]->获取装扮上衣技能列表(剑帝上衣技能);
	DNF设置项数据库[设置_装扮上衣属性].InitIndexEntry(设置_装扮上衣属性,L"装扮上衣属性",奶妈上衣技能数+剑帝上衣技能数,0);
	for (int i=0;i<奶妈上衣技能数;i++)
		DNF设置项数据库[设置_装扮上衣属性].AddItemInfo(奶妈上衣技能[i]);
	DNF设置项数据库[设置_装扮上衣属性].SetJobFilterInfo(职业对象表[0]->职业,0,奶妈上衣技能数);
	//DNF设置项数据库[设置_装扮上衣属性].AddItemInfo(L"勇气祝福");
	//DNF设置项数据库[设置_装扮上衣属性].AddItemInfo(L"守护祝福");
	//DNF设置项数据库[设置_装扮上衣属性].AddItemInfo(L"复苏之光");
	//DNF设置项数据库[设置_装扮上衣属性].AddItemInfo(L"新生颂歌");
	for (int i=0;i<剑帝上衣技能数;i++)
		DNF设置项数据库[设置_装扮上衣属性].AddItemInfo(剑帝上衣技能[i]);
	DNF设置项数据库[设置_装扮上衣属性].SetJobFilterInfo(职业对象表[1]->职业,奶妈上衣技能数,剑帝上衣技能数);
	//DNF设置项数据库[设置_装扮上衣属性].AddItemInfo(L"三才剑");
	//DNF设置项数据库[设置_装扮上衣属性].AddItemInfo(L"轮回剑");
	//DNF设置项数据库[设置_装扮上衣属性].AddItemInfo(L"三才回轮剑");
	//DNF设置项数据库[设置_装扮上衣属性].AddItemInfo(L"两仪功");
	//DNF设置项数据库[设置_装扮上衣属性].AddItemInfo(L"五气朝元");

	DNF设置项数据库[设置_装扮头部属性].InitIndexEntry(设置_装扮头部属性,L"装扮头部属性",3,0);
	DNF设置项数据库[设置_装扮头部属性].AddItemInfo(L"智力");
	DNF设置项数据库[设置_装扮头部属性].AddItemInfo(L"施放速度");
	DNF设置项数据库[设置_装扮头部属性].AddItemInfo(L"其他");
	DNF设置项数据库[设置_装扮帽子属性].InitIndexEntry(设置_装扮帽子属性,L"装扮帽子属性",3,0);
	DNF设置项数据库[设置_装扮帽子属性].AddItemInfo(L"智力");
	DNF设置项数据库[设置_装扮帽子属性].AddItemInfo(L"施放速度");
	DNF设置项数据库[设置_装扮帽子属性].AddItemInfo(L"其他");
	DNF设置项数据库[设置_装扮脸部属性].InitIndexEntry(设置_装扮脸部属性,L"装扮脸部属性",3,0);
	DNF设置项数据库[设置_装扮脸部属性].AddItemInfo(L"攻击速度");
	DNF设置项数据库[设置_装扮脸部属性].AddItemInfo(L"异常状态抗性");
	DNF设置项数据库[设置_装扮脸部属性].AddItemInfo(L"其他");
	DNF设置项数据库[设置_装扮胸部属性].InitIndexEntry(设置_装扮胸部属性,L"装扮胸部属性",3,0);
	DNF设置项数据库[设置_装扮胸部属性].AddItemInfo(L"攻击速度");
	DNF设置项数据库[设置_装扮胸部属性].AddItemInfo(L"异常状态抗性");
	DNF设置项数据库[设置_装扮胸部属性].AddItemInfo(L"其他");
	//DNF设置项数据库[设置_装扮上衣属性]
	DNF设置项数据库[设置_装扮下装属性].InitIndexEntry(设置_装扮下装属性,L"装扮下装属性",1,0);
	DNF设置项数据库[设置_装扮下装属性].AddItemInfo(L"其他");
	DNF设置项数据库[设置_装扮腰部属性].InitIndexEntry(设置_装扮腰部属性,L"装扮腰部属性",6,0);
	DNF设置项数据库[设置_装扮腰部属性].AddItemInfo(L"力量");
	DNF设置项数据库[设置_装扮腰部属性].AddItemInfo(L"火属性抗性");
	DNF设置项数据库[设置_装扮腰部属性].AddItemInfo(L"冰属性抗性");
	DNF设置项数据库[设置_装扮腰部属性].AddItemInfo(L"光属性抗性");
	DNF设置项数据库[设置_装扮腰部属性].AddItemInfo(L"暗属性抗性");
	DNF设置项数据库[设置_装扮腰部属性].AddItemInfo(L"其他");
	DNF设置项数据库[设置_装扮鞋子属性].InitIndexEntry(设置_装扮鞋子属性,L"装扮鞋子属性",3,0);
	DNF设置项数据库[设置_装扮鞋子属性].AddItemInfo(L"力量");
	DNF设置项数据库[设置_装扮鞋子属性].AddItemInfo(L"移动速度");
	DNF设置项数据库[设置_装扮鞋子属性].AddItemInfo(L"其他");

	//武器装扮和皮肤的四维只可选一项，计算时按职业推荐属性自动选择
	//主动技能加成不包含增益类技能（如圣洁之翼，春节称号至尊附魔也是如此）
	DNF设置项数据库[设置_武器装扮].InitIndexEntry(设置_武器装扮,L"武器装扮",装备对象表[武器装扮类].size(),0);
	for (std::vector<DNF装备对象*>::iterator it=装备对象表[武器装扮类].begin();it!=装备对象表[武器装扮类].end();it++)
		DNF设置项数据库[设置_武器装扮].AddItemInfo((*it)->名称);
	设置项添加徽章信息(设置_武器装扮徽章1,L"武器装扮徽章1",彩色槽可用徽章数量,红色徽章|绿色徽章|蓝色徽章|黄色徽章);
	设置项添加徽章信息(设置_武器装扮徽章2,L"武器装扮徽章2",彩色槽可用徽章数量,红色徽章|绿色徽章|蓝色徽章|黄色徽章);

	DNF设置项数据库[设置_皮肤].InitIndexEntry(设置_皮肤,L"皮肤",装备对象表[皮肤类].size(),0);
	for (std::vector<DNF装备对象*>::iterator it=装备对象表[皮肤类].begin();it!=装备对象表[皮肤类].end();it++)
		DNF设置项数据库[设置_皮肤].AddItemInfo((*it)->名称);
	设置项添加徽章信息(设置_皮肤徽章1,L"设置_皮肤徽章1",彩色槽可用徽章数量,红色徽章|绿色徽章|蓝色徽章|黄色徽章);
	设置项添加徽章信息(设置_皮肤徽章2,L"设置_皮肤徽章2",彩色槽可用徽章数量,红色徽章|绿色徽章|蓝色徽章|黄色徽章);

	DNF设置项数据库[设置_光环].InitIndexEntry(设置_光环,L"光环",装备对象表[光环类].size(),0);
	for (std::vector<DNF装备对象*>::iterator it=装备对象表[光环类].begin();it!=装备对象表[光环类].end();it++)
		DNF设置项数据库[设置_光环].AddItemInfo((*it)->名称);
	设置项添加徽章信息(设置_光环徽章1,L"设置_光环徽章1",彩色槽可用徽章数量,红色徽章|绿色徽章|蓝色徽章|黄色徽章);
	设置项添加徽章信息(设置_光环徽章2,L"设置_光环徽章2",彩色槽可用徽章数量,红色徽章|绿色徽章|蓝色徽章|黄色徽章);

	DNF设置项数据库[设置_辟邪玉词条1].InitIndexEntry(设置_辟邪玉词条1,L"辟邪玉词条1",23,0);
	DNF设置项数据库[设置_辟邪玉词条2].InitIndexEntry(设置_辟邪玉词条2,L"辟邪玉词条2",23,0);
	DNF设置项数据库[设置_辟邪玉词条3].InitIndexEntry(设置_辟邪玉词条3,L"辟邪玉词条3",23,0);
	DNF设置项数据库[设置_辟邪玉词条4].InitIndexEntry(设置_辟邪玉词条4,L"辟邪玉词条4",23,0);
	for (int i=设置_辟邪玉词条1;i<=设置_辟邪玉词条4;i++)
	{
		DNF设置项数据库[i].AddItemInfo(L"无");
		DNF设置项数据库[i].AddItemInfo(L"技能伤害增加");
		DNF设置项数据库[i].AddItemInfo(L"[装备属性强化增加]增幅");
		DNF设置项数据库[i].AddItemInfo(L"[火属性附加伤害增加]增幅");
		DNF设置项数据库[i].AddItemInfo(L"[冰属性附加伤害增加]增幅");
		DNF设置项数据库[i].AddItemInfo(L"[光属性附加伤害增加]增幅");
		DNF设置项数据库[i].AddItemInfo(L"[暗属性附加伤害增加]增幅");
		DNF设置项数据库[i].AddItemInfo(L"[附加伤害增加]增幅");
		DNF设置项数据库[i].AddItemInfo(L"[暴击伤害增加]增幅");
		DNF设置项数据库[i].AddItemInfo(L"[伤害增加]增幅");
		DNF设置项数据库[i].AddItemInfo(L"[最终伤害增加]增幅");
		DNF设置项数据库[i].AddItemInfo(L"[力智增加]增幅");
		DNF设置项数据库[i].AddItemInfo(L"[三攻增加]增幅");
		DNF设置项数据库[i].AddItemInfo(L"三速增加");
		DNF设置项数据库[i].AddItemInfo(L"10~15级全部技能+1");
		DNF设置项数据库[i].AddItemInfo(L"20~25级全部技能+1");
		DNF设置项数据库[i].AddItemInfo(L"30~35级全部技能+1");
		DNF设置项数据库[i].AddItemInfo(L"40~45级全部技能+1");
		DNF设置项数据库[i].AddItemInfo(L"55~60级全部技能+1");
		DNF设置项数据库[i].AddItemInfo(L"65~70级全部技能+1");
		DNF设置项数据库[i].AddItemInfo(L"75~80级全部技能+1");
		DNF设置项数据库[i].AddItemInfo(L"一次觉醒主动技能+1");
		DNF设置项数据库[i].AddItemInfo(L"二次觉醒主动技能+1");
	}
	//辟邪玉属性尝试使用Slider+Value，技攻是-6.0~6.0，其余属性均为-5.0~5.0，等级隐藏Slider强制+1
	DNF设置项数据库[设置_辟邪玉词条1属性].InitValueEntry(设置_辟邪玉词条1属性,L"辟邪玉词条1属性",1,0.0f);
	DNF设置项数据库[设置_辟邪玉词条2属性].InitValueEntry(设置_辟邪玉词条2属性,L"辟邪玉词条2属性",1,0.0f);
	DNF设置项数据库[设置_辟邪玉词条3属性].InitValueEntry(设置_辟邪玉词条3属性,L"辟邪玉词条3属性",1,0.0f);
	DNF设置项数据库[设置_辟邪玉词条4属性].InitValueEntry(设置_辟邪玉词条4属性,L"辟邪玉词条4属性",1,0.0f);

	DNF设置项数据库[设置_星辰百变数量].InitIndexEntry(设置_星辰百变数量,L"星辰百变数量",12,4);
	DNF设置项数据库[设置_星辰百变数量].AddItemInfoBatch<int>(L"%d",0,1,12);

	DNF设置项数据库[设置_跨越之忆星团].InitIndexEntry(设置_跨越之忆星团,L"跨越之忆星团",5,0);
	DNF设置项数据库[设置_跨越之忆星团].AddItemInfo(L"焰");
	DNF设置项数据库[设置_跨越之忆星团].AddItemInfo(L"雨");
	DNF设置项数据库[设置_跨越之忆星团].AddItemInfo(L"霜");
	DNF设置项数据库[设置_跨越之忆星团].AddItemInfo(L"风");
	DNF设置项数据库[设置_跨越之忆星团].AddItemInfo(L"雷");

	//剑帝专属选项
	DNF设置项数据库[设置_副武器状态].InitIndexEntry(设置_副武器状态,L"副武器状态",5,1);
	DNF设置项数据库[设置_副武器状态].AddItemInfo(L"无");
	DNF设置项数据库[设置_副武器状态].AddItemInfo(L"普通史诗");
	DNF设置项数据库[设置_副武器状态].AddItemInfo(L"雾神20史诗");
	DNF设置项数据库[设置_副武器状态].AddItemInfo(L"普通太初");
	DNF设置项数据库[设置_副武器状态].AddItemInfo(L"雾神20太初");
	DNF设置项数据库[设置_副武器状态].SetJobSpecialFlag(职业_流浪武士);
	DNF设置项数据库[设置_副武器强化].InitIndexEntry(设置_副武器强化,L"副武器强化",21,12);
	DNF设置项数据库[设置_副武器强化].AddItemInfoBatch<int>(L"%d",0,1,21);
	DNF设置项数据库[设置_副武器强化].SetJobSpecialFlag(职业_流浪武士);

	int 红色宠物装备数量=0;
	int 蓝色宠物装备数量=0;
	int 绿色宠物装备数量=0;
	for (std::vector<DNF装备对象*>::iterator it=装备对象表[宠物装备类].begin()+1;it!=装备对象表[宠物装备类].end();it++)
	{
		if ((*it)->宠物装备颜色==宠物装备_红色)
			红色宠物装备数量++;
		else if ((*it)->宠物装备颜色==宠物装备_蓝色)
			蓝色宠物装备数量++;
		else if ((*it)->宠物装备颜色==宠物装备_绿色)
			绿色宠物装备数量++;
	}
	DNF设置项数据库[设置_红色宠物装备].InitIndexEntry(设置_红色宠物装备,L"红色宠物装备",红色宠物装备数量+1,0);
	DNF设置项数据库[设置_红色宠物装备].AddItemInfo((装备对象表[宠物装备类])[0]->名称);	//无
	for (std::vector<DNF装备对象*>::iterator it=装备对象表[宠物装备类].begin()+1;it!=装备对象表[宠物装备类].end();it++)
	{
		if ((*it)->宠物装备颜色==宠物装备_红色)
			DNF设置项数据库[设置_红色宠物装备].AddItemInfo((*it)->名称);
	}
	DNF设置项数据库[设置_蓝色宠物装备].InitIndexEntry(设置_蓝色宠物装备,L"蓝色宠物装备",蓝色宠物装备数量+1,0);
	DNF设置项数据库[设置_蓝色宠物装备].AddItemInfo((装备对象表[宠物装备类])[0]->名称);	//无
	for (std::vector<DNF装备对象*>::iterator it=装备对象表[宠物装备类].begin()+1;it!=装备对象表[宠物装备类].end();it++)
	{
		if ((*it)->宠物装备颜色==宠物装备_蓝色)
			DNF设置项数据库[设置_蓝色宠物装备].AddItemInfo((*it)->名称);
	}
	DNF设置项数据库[设置_绿色宠物装备].InitIndexEntry(设置_绿色宠物装备,L"绿色宠物装备",绿色宠物装备数量+1,0);
	DNF设置项数据库[设置_绿色宠物装备].AddItemInfo((装备对象表[宠物装备类])[0]->名称);	//无
	for (std::vector<DNF装备对象*>::iterator it=装备对象表[宠物装备类].begin()+1;it!=装备对象表[宠物装备类].end();it++)
	{
		if ((*it)->宠物装备颜色==宠物装备_绿色)
			DNF设置项数据库[设置_绿色宠物装备].AddItemInfo((*it)->名称);
	}
	
	DNF设置项数据库[设置_快捷栏装备].InitIndexEntry(设置_快捷栏装备,L"快捷栏装备",装备对象表[快捷栏装备类].size(),0);
	for (std::vector<DNF装备对象*>::iterator it=装备对象表[快捷栏装备类].begin();it!=装备对象表[快捷栏装备类].end();it++)
		DNF设置项数据库[设置_快捷栏装备].AddItemInfo((*it)->名称);

	DNF设置项数据库[设置_勋章品质].InitIndexEntry(设置_勋章品质,L"勋章品质",6,5);
	DNF设置项数据库[设置_勋章品质].AddItemInfo(L"普通");
	DNF设置项数据库[设置_勋章品质].AddItemInfo(L"高级");
	DNF设置项数据库[设置_勋章品质].AddItemInfo(L"稀有");
	DNF设置项数据库[设置_勋章品质].AddItemInfo(L"神器");
	DNF设置项数据库[设置_勋章品质].AddItemInfo(L"传说");
	DNF设置项数据库[设置_勋章品质].AddItemInfo(L"史诗");
	DNF设置项数据库[设置_勋章强化].InitIndexEntry(设置_勋章强化,L"勋章强化",13,10);
	DNF设置项数据库[设置_勋章强化].AddItemInfoBatch<int>(L"%d",0,1,13);
	DNF设置项数据库[设置_守护珠1品质].InitIndexEntry(设置_守护珠1品质,L"守护珠1品质",5,4);
	DNF设置项数据库[设置_守护珠2品质].InitIndexEntry(设置_守护珠2品质,L"守护珠2品质",5,4);
	DNF设置项数据库[设置_守护珠3品质].InitIndexEntry(设置_守护珠3品质,L"守护珠3品质",5,4);
	DNF设置项数据库[设置_守护珠4品质].InitIndexEntry(设置_守护珠4品质,L"守护珠4品质",5,4);
	for (int i=设置_守护珠1品质;i<=设置_守护珠4品质;i++)
	{
		DNF设置项数据库[i].AddItemInfo(L"普通");
		DNF设置项数据库[i].AddItemInfo(L"高级");
		DNF设置项数据库[i].AddItemInfo(L"稀有");
		DNF设置项数据库[i].AddItemInfo(L"神器");
		DNF设置项数据库[i].AddItemInfo(L"传说");
	}

	DNF设置项数据库[设置_冒险团等级].InitIndexEntry(设置_冒险团等级,L"冒险团等级",40,0);
	DNF设置项数据库[设置_冒险团等级].AddItemInfoBatch<int>(L"%d",1,1,40);

	DNF设置项数据库[设置_公会属性].InitIndexEntry(设置_公会属性,L"公会属性",3,0);
	DNF设置项数据库[设置_公会属性].AddItemInfo(L"无");
	DNF设置项数据库[设置_公会属性].AddItemInfo(L"60四维");
	DNF设置项数据库[设置_公会属性].AddItemInfo(L"120四维");

	DNF设置项数据库[设置_公会训练官属性1].InitIndexEntry(设置_公会训练官属性1,L"公会训练官属性1",5,0);
	DNF设置项数据库[设置_公会训练官属性1].AddItemInfo(L"无");
	DNF设置项数据库[设置_公会训练官属性1].AddItemInfo(L"Lv1 四维40/三攻25");
	DNF设置项数据库[设置_公会训练官属性1].AddItemInfo(L"Lv2 四维50/三攻30");
	DNF设置项数据库[设置_公会训练官属性1].AddItemInfo(L"Lv3 四维60/三攻35");
	DNF设置项数据库[设置_公会训练官属性1].AddItemInfo(L"Lv4 四维80/三攻50");
	DNF设置项数据库[设置_公会训练官属性2].InitIndexEntry(设置_公会训练官属性2,L"公会训练官属性2",5,0);
	DNF设置项数据库[设置_公会训练官属性2].AddItemInfo(L"无");
	DNF设置项数据库[设置_公会训练官属性2].AddItemInfo(L"Lv1 三速1%");
	DNF设置项数据库[设置_公会训练官属性2].AddItemInfo(L"Lv2 三速2%");
	DNF设置项数据库[设置_公会训练官属性2].AddItemInfo(L"Lv3 三速3%");
	DNF设置项数据库[设置_公会训练官属性2].AddItemInfo(L"Lv4 三速4%");

	DNF设置项数据库[设置_婚房属性].InitIndexEntry(设置_婚房属性,L"婚房属性",5,0);
	DNF设置项数据库[设置_婚房属性].AddItemInfo(L"无");
	DNF设置项数据库[设置_婚房属性].AddItemInfo(L"全属强+1");
	DNF设置项数据库[设置_婚房属性].AddItemInfo(L"全属强+3");
	DNF设置项数据库[设置_婚房属性].AddItemInfo(L"全属强+5/三攻+5");
	DNF设置项数据库[设置_婚房属性].AddItemInfo(L"全属强+8/三攻(+10/+10/+20)");
	DNF设置项数据库[设置_婚戒属性].InitIndexEntry(设置_婚戒属性,L"婚戒属性",6,0);
	DNF设置项数据库[设置_婚戒属性].AddItemInfo(L"无");
	DNF设置项数据库[设置_婚戒属性].AddItemInfo(L"其他属性");
	DNF设置项数据库[设置_婚戒属性].AddItemInfo(L"力智+15");
	DNF设置项数据库[设置_婚戒属性].AddItemInfo(L"力智+15/其他属性");
	DNF设置项数据库[设置_婚戒属性].AddItemInfo(L"力智+15/移动速度+2%");
	DNF设置项数据库[设置_婚戒属性].AddItemInfo(L"力智+15/三速+2%");

	DNF设置项数据库[设置_晶体契约].InitIndexEntry(设置_晶体契约,L"晶体契约",2,0);
	DNF设置项数据库[设置_晶体契约].AddItemInfo(L"无");
	DNF设置项数据库[设置_晶体契约].AddItemInfo(L"无色晶体契约");

	DNF设置项数据库[设置_名称装饰卡].InitIndexEntry(设置_名称装饰卡,L"名称装饰卡",2,0);
	DNF设置项数据库[设置_名称装饰卡].AddItemInfo(L"无");
	DNF设置项数据库[设置_名称装饰卡].AddItemInfo(L"商城名称装饰卡");

	//只有春节和夏日有收集箱
	DNF设置项数据库[设置_收集箱类型].InitIndexEntry(设置_收集箱类型,L"收集箱类型",5,0);
	DNF设置项数据库[设置_收集箱类型].AddItemInfo(L"无");
	DNF设置项数据库[设置_收集箱类型].AddItemInfo(L"2023春节套");
	DNF设置项数据库[设置_收集箱类型].AddItemInfo(L"2023夏日套");
	DNF设置项数据库[设置_收集箱类型].AddItemInfo(L"2024春节套");
	DNF设置项数据库[设置_收集箱类型].AddItemInfo(L"2024夏日套");
	DNF设置项数据库[设置_收集箱稀有数量].InitIndexEntry(设置_收集箱稀有数量,L"收集箱稀有数量",6,0);
	DNF设置项数据库[设置_收集箱稀有数量].AddItemInfoBatch<int>(L"%d",0,1,6);
	DNF设置项数据库[设置_收集箱神器数量].InitIndexEntry(设置_收集箱神器数量,L"收集箱神器数量",6,0);
	DNF设置项数据库[设置_收集箱神器数量].AddItemInfoBatch<int>(L"%d",0,1,6);

	//补正（使用Value；三攻，力智，属强，属抗为整数显示，其余为百分数显示）
	DNF设置项数据库[设置_辅助力智加成].InitValueEntry(设置_辅助力智加成,L"辅助力智加成",-1,0.0f);
	DNF设置项数据库[设置_辅助三攻加成].InitValueEntry(设置_辅助三攻加成,L"辅助三攻加成",-1,0.0f);
	DNF设置项数据库[设置_辅助技攻加成].InitValueEntry(设置_辅助技攻加成,L"辅助技攻加成",2,0.0f);
	DNF设置项数据库[设置_四维补正].InitValueEntry(设置_四维补正,L"四维补正",-1,0.0f);
	DNF设置项数据库[设置_三攻补正].InitValueEntry(设置_三攻补正,L"三攻补正",-1,0.0f);
	DNF设置项数据库[设置_技攻补正].InitValueEntry(设置_技攻补正,L"技攻补正",2,0.0f);
	DNF设置项数据库[设置_攻击强化补正].InitValueEntry(设置_攻击强化补正,L"攻击强化补正",2,0.0f);
	DNF设置项数据库[设置_攻击强化增幅补正].InitValueEntry(设置_攻击强化增幅补正,L"攻击强化增幅补正",2,0.0f);
	DNF设置项数据库[设置_火强补正].InitValueEntry(设置_火强补正,L"火强补正",-1,0.0f);
	DNF设置项数据库[设置_冰强补正].InitValueEntry(设置_冰强补正,L"冰强补正",-1,0.0f);
	DNF设置项数据库[设置_光强补正].InitValueEntry(设置_光强补正,L"光强补正",-1,0.0f);
	DNF设置项数据库[设置_暗强补正].InitValueEntry(设置_暗强补正,L"暗强补正",-1,0.0f);
	DNF设置项数据库[设置_火抗补正].InitValueEntry(设置_火抗补正,L"火抗补正",-1,0.0f);
	DNF设置项数据库[设置_冰抗补正].InitValueEntry(设置_冰抗补正,L"冰抗补正",-1,0.0f);
	DNF设置项数据库[设置_光抗补正].InitValueEntry(设置_光抗补正,L"光抗补正",-1,0.0f);
	DNF设置项数据库[设置_暗抗补正].InitValueEntry(设置_暗抗补正,L"暗抗补正",-1,0.0f);
	DNF设置项数据库[设置_异常状态1补正].InitValueEntry(设置_异常状态1补正,L"异常状态1补正",2,0.0f);
	DNF设置项数据库[设置_异常状态2补正].InitValueEntry(设置_异常状态2补正,L"异常状态2补正",2,0.0f);
	DNF设置项数据库[设置_异常状态3补正].InitValueEntry(设置_异常状态3补正,L"异常状态3补正",2,0.0f);
	DNF设置项数据库[设置_异常状态4补正].InitValueEntry(设置_异常状态4补正,L"异常状态4补正",2,0.0f);
	DNF设置项数据库[设置_异常状态5补正].InitValueEntry(设置_异常状态5补正,L"异常状态5补正",2,0.0f);
	DNF设置项数据库[设置_异常状态6补正].InitValueEntry(设置_异常状态6补正,L"异常状态6补正",2,0.0f);
	DNF设置项数据库[设置_异常状态7补正].InitValueEntry(设置_异常状态7补正,L"异常状态7补正",2,0.0f);
	DNF设置项数据库[设置_异常状态8补正].InitValueEntry(设置_异常状态8补正,L"异常状态8补正",2,0.0f);
	DNF设置项数据库[设置_异常状态9补正].InitValueEntry(设置_异常状态9补正,L"异常状态9补正",2,0.0f);
	DNF设置项数据库[设置_异常状态10补正].InitValueEntry(设置_异常状态10补正,L"异常状态10补正",2,0.0f);
	DNF设置项数据库[设置_异常状态11补正].InitValueEntry(设置_异常状态11补正,L"异常状态11补正",2,0.0f);
	DNF设置项数据库[设置_异常状态12补正].InitValueEntry(设置_异常状态12补正,L"异常状态12补正",2,0.0f);
	DNF设置项数据库[设置_异常状态13补正].InitValueEntry(设置_异常状态13补正,L"异常状态13补正",2,0.0f);
	DNF设置项数据库[设置_攻速补正].InitValueEntry(设置_攻速补正,L"攻速补正",2,0.0f);
	DNF设置项数据库[设置_技能范围补正].InitValueEntry(设置_技能范围补正,L"技能范围补正",2,0.0f);
	DNF设置项数据库[设置_MP消耗量补正].InitValueEntry(设置_MP消耗量补正,L"MP消耗量补正",2,0.0f);

	//特性使用专用UI，这里仅用作存档
	DNF设置项数据库[设置_特性类型].InitIndexEntry(设置_特性类型,L"特性类型",4);
	//特性技能等级每类最多14个，最低0级，最高10级
	//如果不足14个，多出的槽设为0，虽然加入存档，但不会使用
	DNF设置项数据库[设置_特性1等级].InitIndexEntry(设置_特性1等级,L"特性1等级",11);
	DNF设置项数据库[设置_特性2等级].InitIndexEntry(设置_特性2等级,L"特性2等级",11);
	DNF设置项数据库[设置_特性3等级].InitIndexEntry(设置_特性3等级,L"特性3等级",11);
	DNF设置项数据库[设置_特性4等级].InitIndexEntry(设置_特性4等级,L"特性4等级",11);
	DNF设置项数据库[设置_特性5等级].InitIndexEntry(设置_特性5等级,L"特性5等级",11);
	DNF设置项数据库[设置_特性6等级].InitIndexEntry(设置_特性6等级,L"特性6等级",11);
	DNF设置项数据库[设置_特性7等级].InitIndexEntry(设置_特性7等级,L"特性7等级",11);
	DNF设置项数据库[设置_特性8等级].InitIndexEntry(设置_特性8等级,L"特性8等级",11);
	DNF设置项数据库[设置_特性9等级].InitIndexEntry(设置_特性9等级,L"特性9等级",11);
	DNF设置项数据库[设置_特性10等级].InitIndexEntry(设置_特性10等级,L"特性10等级",11);
	DNF设置项数据库[设置_特性11等级].InitIndexEntry(设置_特性11等级,L"特性11等级",11);
	DNF设置项数据库[设置_特性12等级].InitIndexEntry(设置_特性12等级,L"特性12等级",11);
	DNF设置项数据库[设置_特性13等级].InitIndexEntry(设置_特性13等级,L"特性13等级",11);
	DNF设置项数据库[设置_特性14等级].InitIndexEntry(设置_特性14等级,L"特性14等级",11);


	//技能
	//废弃旧方案，技能设置项仅用作存档，相关控件的创建、加载数据、重置，均由技能面板相关的代码完成
	//次数相关的设置不受职业限制，ResetEdit()依旧可用，而ResetDropList()和ResetCheckBox()失效

	//所有职业共用控件技能设置项，根据CurrentJob进行不同的初始化
	//每个职业的每个技能都提供71个等级的选项（不考虑基础精通），每个TP技能都提供11个等级的选项
	//每个设置项需要提供职业过滤信息；每个职业的技能数量不一样，技能设置项需要加职业专属标记区分
	//所有次数和Buff都为Value，其余为Index
	//过滤信息和专属标记的生成需要遍历技能对象，当前暂不处理
	DNF设置项数据库[设置_主动技能1等级].InitIndexEntry(设置_主动技能1等级,L"主动技能1等级",71);
	DNF设置项数据库[设置_主动技能2等级].InitIndexEntry(设置_主动技能2等级,L"主动技能2等级",71);
	DNF设置项数据库[设置_主动技能3等级].InitIndexEntry(设置_主动技能3等级,L"主动技能3等级",71);
	DNF设置项数据库[设置_主动技能4等级].InitIndexEntry(设置_主动技能4等级,L"主动技能4等级",71);
	DNF设置项数据库[设置_主动技能5等级].InitIndexEntry(设置_主动技能5等级,L"主动技能5等级",71);
	DNF设置项数据库[设置_主动技能6等级].InitIndexEntry(设置_主动技能6等级,L"主动技能6等级",71);
	DNF设置项数据库[设置_主动技能7等级].InitIndexEntry(设置_主动技能7等级,L"主动技能7等级",71);
	DNF设置项数据库[设置_主动技能8等级].InitIndexEntry(设置_主动技能8等级,L"主动技能8等级",71);
	DNF设置项数据库[设置_主动技能9等级].InitIndexEntry(设置_主动技能9等级,L"主动技能9等级",71);
	DNF设置项数据库[设置_主动技能10等级].InitIndexEntry(设置_主动技能10等级,L"主动技能10等级",71);
	DNF设置项数据库[设置_主动技能11等级].InitIndexEntry(设置_主动技能11等级,L"主动技能11等级",71);
	DNF设置项数据库[设置_主动技能12等级].InitIndexEntry(设置_主动技能12等级,L"主动技能12等级",71);
	DNF设置项数据库[设置_主动技能13等级].InitIndexEntry(设置_主动技能13等级,L"主动技能13等级",71);
	DNF设置项数据库[设置_主动技能14等级].InitIndexEntry(设置_主动技能14等级,L"主动技能14等级",71);
	DNF设置项数据库[设置_主动技能15等级].InitIndexEntry(设置_主动技能15等级,L"主动技能15等级",71);
	DNF设置项数据库[设置_主动技能16等级].InitIndexEntry(设置_主动技能16等级,L"主动技能16等级",71);
	DNF设置项数据库[设置_主动技能17等级].InitIndexEntry(设置_主动技能17等级,L"主动技能17等级",71);
	DNF设置项数据库[设置_主动技能18等级].InitIndexEntry(设置_主动技能18等级,L"主动技能18等级",71);
	DNF设置项数据库[设置_主动技能19等级].InitIndexEntry(设置_主动技能19等级,L"主动技能19等级",71);
	DNF设置项数据库[设置_主动技能20等级].InitIndexEntry(设置_主动技能20等级,L"主动技能20等级",71);
	for (int i=设置_主动技能1等级;i<=设置_主动技能20等级;i++)
		DNF设置项数据库[i].AddItemInfoBatch<int>(L"%d",0,1,71);

	DNF设置项数据库[设置_主动技能1TP等级].InitIndexEntry(设置_主动技能1TP等级,L"主动技能1TP等级",11);
	DNF设置项数据库[设置_主动技能2TP等级].InitIndexEntry(设置_主动技能2TP等级,L"主动技能2TP等级",11);
	DNF设置项数据库[设置_主动技能3TP等级].InitIndexEntry(设置_主动技能3TP等级,L"主动技能3TP等级",11);
	DNF设置项数据库[设置_主动技能4TP等级].InitIndexEntry(设置_主动技能4TP等级,L"主动技能4TP等级",11);
	DNF设置项数据库[设置_主动技能5TP等级].InitIndexEntry(设置_主动技能5TP等级,L"主动技能5TP等级",11);
	DNF设置项数据库[设置_主动技能6TP等级].InitIndexEntry(设置_主动技能6TP等级,L"主动技能6TP等级",11);
	DNF设置项数据库[设置_主动技能7TP等级].InitIndexEntry(设置_主动技能7TP等级,L"主动技能7TP等级",11);
	DNF设置项数据库[设置_主动技能8TP等级].InitIndexEntry(设置_主动技能8TP等级,L"主动技能8TP等级",11);
	DNF设置项数据库[设置_主动技能9TP等级].InitIndexEntry(设置_主动技能9TP等级,L"主动技能9TP等级",11);
	DNF设置项数据库[设置_主动技能10TP等级].InitIndexEntry(设置_主动技能10TP等级,L"主动技能10TP等级",11);
	DNF设置项数据库[设置_主动技能11TP等级].InitIndexEntry(设置_主动技能11TP等级,L"主动技能11TP等级",11);
	DNF设置项数据库[设置_主动技能12TP等级].InitIndexEntry(设置_主动技能12TP等级,L"主动技能12TP等级",11);
	DNF设置项数据库[设置_主动技能13TP等级].InitIndexEntry(设置_主动技能13TP等级,L"主动技能13TP等级",11);
	DNF设置项数据库[设置_主动技能14TP等级].InitIndexEntry(设置_主动技能14TP等级,L"主动技能14TP等级",11);
	DNF设置项数据库[设置_主动技能15TP等级].InitIndexEntry(设置_主动技能15TP等级,L"主动技能15TP等级",11);
	DNF设置项数据库[设置_主动技能16TP等级].InitIndexEntry(设置_主动技能16TP等级,L"主动技能16TP等级",11);
	DNF设置项数据库[设置_主动技能17TP等级].InitIndexEntry(设置_主动技能17TP等级,L"主动技能17TP等级",11);
	DNF设置项数据库[设置_主动技能18TP等级].InitIndexEntry(设置_主动技能18TP等级,L"主动技能18TP等级",11);
	DNF设置项数据库[设置_主动技能19TP等级].InitIndexEntry(设置_主动技能19TP等级,L"主动技能19TP等级",11);
	DNF设置项数据库[设置_主动技能20TP等级].InitIndexEntry(设置_主动技能20TP等级,L"主动技能20TP等级",11);
	for (int i=设置_主动技能1TP等级;i<=设置_主动技能20TP等级;i++)
		DNF设置项数据库[i].AddItemInfoBatch<int>(L"%d",0,1,11);

	DNF设置项数据库[设置_主动技能1次数].InitValueEntry(设置_主动技能1次数,L"主动技能1次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能2次数].InitValueEntry(设置_主动技能2次数,L"主动技能2次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能3次数].InitValueEntry(设置_主动技能3次数,L"主动技能3次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能4次数].InitValueEntry(设置_主动技能4次数,L"主动技能4次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能5次数].InitValueEntry(设置_主动技能5次数,L"主动技能5次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能6次数].InitValueEntry(设置_主动技能6次数,L"主动技能6次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能7次数].InitValueEntry(设置_主动技能7次数,L"主动技能7次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能8次数].InitValueEntry(设置_主动技能8次数,L"主动技能8次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能9次数].InitValueEntry(设置_主动技能9次数,L"主动技能9次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能10次数].InitValueEntry(设置_主动技能10次数,L"主动技能10次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能11次数].InitValueEntry(设置_主动技能11次数,L"主动技能11次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能12次数].InitValueEntry(设置_主动技能12次数,L"主动技能12次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能13次数].InitValueEntry(设置_主动技能13次数,L"主动技能13次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能14次数].InitValueEntry(设置_主动技能14次数,L"主动技能14次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能15次数].InitValueEntry(设置_主动技能15次数,L"主动技能15次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能16次数].InitValueEntry(设置_主动技能16次数,L"主动技能16次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能17次数].InitValueEntry(设置_主动技能17次数,L"主动技能17次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能18次数].InitValueEntry(设置_主动技能18次数,L"主动技能18次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能19次数].InitValueEntry(设置_主动技能19次数,L"主动技能19次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能20次数].InitValueEntry(设置_主动技能20次数,L"主动技能20次数",-1,0.0f);

	DNF设置项数据库[设置_主动技能1宠物次数].InitValueEntry(设置_主动技能1宠物次数,L"主动技能1宠物次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能2宠物次数].InitValueEntry(设置_主动技能2宠物次数,L"主动技能2宠物次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能3宠物次数].InitValueEntry(设置_主动技能3宠物次数,L"主动技能3宠物次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能4宠物次数].InitValueEntry(设置_主动技能4宠物次数,L"主动技能4宠物次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能5宠物次数].InitValueEntry(设置_主动技能5宠物次数,L"主动技能5宠物次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能6宠物次数].InitValueEntry(设置_主动技能6宠物次数,L"主动技能6宠物次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能7宠物次数].InitValueEntry(设置_主动技能7宠物次数,L"主动技能7宠物次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能8宠物次数].InitValueEntry(设置_主动技能8宠物次数,L"主动技能8宠物次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能9宠物次数].InitValueEntry(设置_主动技能9宠物次数,L"主动技能9宠物次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能10宠物次数].InitValueEntry(设置_主动技能10宠物次数,L"主动技能10宠物次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能11宠物次数].InitValueEntry(设置_主动技能11宠物次数,L"主动技能11宠物次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能12宠物次数].InitValueEntry(设置_主动技能12宠物次数,L"主动技能12宠物次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能13宠物次数].InitValueEntry(设置_主动技能13宠物次数,L"主动技能13宠物次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能14宠物次数].InitValueEntry(设置_主动技能14宠物次数,L"主动技能14宠物次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能15宠物次数].InitValueEntry(设置_主动技能15宠物次数,L"主动技能15宠物次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能16宠物次数].InitValueEntry(设置_主动技能16宠物次数,L"主动技能16宠物次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能17宠物次数].InitValueEntry(设置_主动技能17宠物次数,L"主动技能17宠物次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能18宠物次数].InitValueEntry(设置_主动技能18宠物次数,L"主动技能18宠物次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能19宠物次数].InitValueEntry(设置_主动技能19宠物次数,L"主动技能19宠物次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能20宠物次数].InitValueEntry(设置_主动技能20宠物次数,L"主动技能20宠物次数",-1,0.0f);

	DNF设置项数据库[设置_主动技能1手搓次数].InitValueEntry(设置_主动技能1手搓次数,L"主动技能1手搓次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能2手搓次数].InitValueEntry(设置_主动技能2手搓次数,L"主动技能2手搓次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能3手搓次数].InitValueEntry(设置_主动技能3手搓次数,L"主动技能3手搓次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能4手搓次数].InitValueEntry(设置_主动技能4手搓次数,L"主动技能4手搓次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能5手搓次数].InitValueEntry(设置_主动技能5手搓次数,L"主动技能5手搓次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能6手搓次数].InitValueEntry(设置_主动技能6手搓次数,L"主动技能6手搓次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能7手搓次数].InitValueEntry(设置_主动技能7手搓次数,L"主动技能7手搓次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能8手搓次数].InitValueEntry(设置_主动技能8手搓次数,L"主动技能8手搓次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能9手搓次数].InitValueEntry(设置_主动技能9手搓次数,L"主动技能9手搓次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能10手搓次数].InitValueEntry(设置_主动技能10手搓次数,L"主动技能10手搓次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能11手搓次数].InitValueEntry(设置_主动技能11手搓次数,L"主动技能11手搓次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能12手搓次数].InitValueEntry(设置_主动技能12手搓次数,L"主动技能12手搓次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能13手搓次数].InitValueEntry(设置_主动技能13手搓次数,L"主动技能13手搓次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能14手搓次数].InitValueEntry(设置_主动技能14手搓次数,L"主动技能14手搓次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能15手搓次数].InitValueEntry(设置_主动技能15手搓次数,L"主动技能15手搓次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能16手搓次数].InitValueEntry(设置_主动技能16手搓次数,L"主动技能16手搓次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能17手搓次数].InitValueEntry(设置_主动技能17手搓次数,L"主动技能17手搓次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能18手搓次数].InitValueEntry(设置_主动技能18手搓次数,L"主动技能18手搓次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能19手搓次数].InitValueEntry(设置_主动技能19手搓次数,L"主动技能19手搓次数",-1,0.0f);
	DNF设置项数据库[设置_主动技能20手搓次数].InitValueEntry(设置_主动技能20手搓次数,L"主动技能20手搓次数",-1,0.0f);

	DNF设置项数据库[设置_主动技能1手搓方向键数量].InitIndexEntry(设置_主动技能1手搓方向键数量,L"主动技能1手搓方向键数量",5);
	DNF设置项数据库[设置_主动技能2手搓方向键数量].InitIndexEntry(设置_主动技能2手搓方向键数量,L"主动技能2手搓方向键数量",5);
	DNF设置项数据库[设置_主动技能3手搓方向键数量].InitIndexEntry(设置_主动技能3手搓方向键数量,L"主动技能3手搓方向键数量",5);
	DNF设置项数据库[设置_主动技能4手搓方向键数量].InitIndexEntry(设置_主动技能4手搓方向键数量,L"主动技能4手搓方向键数量",5);
	DNF设置项数据库[设置_主动技能5手搓方向键数量].InitIndexEntry(设置_主动技能5手搓方向键数量,L"主动技能5手搓方向键数量",5);
	DNF设置项数据库[设置_主动技能6手搓方向键数量].InitIndexEntry(设置_主动技能6手搓方向键数量,L"主动技能6手搓方向键数量",5);
	DNF设置项数据库[设置_主动技能7手搓方向键数量].InitIndexEntry(设置_主动技能7手搓方向键数量,L"主动技能7手搓方向键数量",5);
	DNF设置项数据库[设置_主动技能8手搓方向键数量].InitIndexEntry(设置_主动技能8手搓方向键数量,L"主动技能8手搓方向键数量",5);
	DNF设置项数据库[设置_主动技能9手搓方向键数量].InitIndexEntry(设置_主动技能9手搓方向键数量,L"主动技能9手搓方向键数量",5);
	DNF设置项数据库[设置_主动技能10手搓方向键数量].InitIndexEntry(设置_主动技能10手搓方向键数量,L"主动技能10手搓方向键数量",5);
	DNF设置项数据库[设置_主动技能11手搓方向键数量].InitIndexEntry(设置_主动技能11手搓方向键数量,L"主动技能11手搓方向键数量",5);
	DNF设置项数据库[设置_主动技能12手搓方向键数量].InitIndexEntry(设置_主动技能12手搓方向键数量,L"主动技能12手搓方向键数量",5);
	DNF设置项数据库[设置_主动技能13手搓方向键数量].InitIndexEntry(设置_主动技能13手搓方向键数量,L"主动技能13手搓方向键数量",5);
	DNF设置项数据库[设置_主动技能14手搓方向键数量].InitIndexEntry(设置_主动技能14手搓方向键数量,L"主动技能14手搓方向键数量",5);
	DNF设置项数据库[设置_主动技能15手搓方向键数量].InitIndexEntry(设置_主动技能15手搓方向键数量,L"主动技能15手搓方向键数量",5);
	DNF设置项数据库[设置_主动技能16手搓方向键数量].InitIndexEntry(设置_主动技能16手搓方向键数量,L"主动技能16手搓方向键数量",5);
	DNF设置项数据库[设置_主动技能17手搓方向键数量].InitIndexEntry(设置_主动技能17手搓方向键数量,L"主动技能17手搓方向键数量",5);
	DNF设置项数据库[设置_主动技能18手搓方向键数量].InitIndexEntry(设置_主动技能18手搓方向键数量,L"主动技能18手搓方向键数量",5);
	DNF设置项数据库[设置_主动技能19手搓方向键数量].InitIndexEntry(设置_主动技能19手搓方向键数量,L"主动技能19手搓方向键数量",5);
	DNF设置项数据库[设置_主动技能20手搓方向键数量].InitIndexEntry(设置_主动技能20手搓方向键数量,L"主动技能20手搓方向键数量",5);
	for (int i=设置_主动技能1手搓方向键数量;i<=设置_主动技能20手搓方向键数量;i++)
		DNF设置项数据库[i].AddItemInfoBatch<int>(L"%d",0,1,5);

	//CheckBox
	DNF设置项数据库[设置_主动技能1在快捷栏].InitIndexEntry(设置_主动技能1在快捷栏,L"主动技能1在快捷栏",2,TRUE);
	DNF设置项数据库[设置_主动技能2在快捷栏].InitIndexEntry(设置_主动技能2在快捷栏,L"主动技能2在快捷栏",2,TRUE);
	DNF设置项数据库[设置_主动技能3在快捷栏].InitIndexEntry(设置_主动技能3在快捷栏,L"主动技能3在快捷栏",2,TRUE);
	DNF设置项数据库[设置_主动技能4在快捷栏].InitIndexEntry(设置_主动技能4在快捷栏,L"主动技能4在快捷栏",2,TRUE);
	DNF设置项数据库[设置_主动技能5在快捷栏].InitIndexEntry(设置_主动技能5在快捷栏,L"主动技能5在快捷栏",2,TRUE);
	DNF设置项数据库[设置_主动技能6在快捷栏].InitIndexEntry(设置_主动技能6在快捷栏,L"主动技能6在快捷栏",2,TRUE);
	DNF设置项数据库[设置_主动技能7在快捷栏].InitIndexEntry(设置_主动技能7在快捷栏,L"主动技能7在快捷栏",2,TRUE);
	DNF设置项数据库[设置_主动技能8在快捷栏].InitIndexEntry(设置_主动技能8在快捷栏,L"主动技能8在快捷栏",2,TRUE);
	DNF设置项数据库[设置_主动技能9在快捷栏].InitIndexEntry(设置_主动技能9在快捷栏,L"主动技能9在快捷栏",2,TRUE);
	DNF设置项数据库[设置_主动技能10在快捷栏].InitIndexEntry(设置_主动技能10在快捷栏,L"主动技能10在快捷栏",2,TRUE);
	DNF设置项数据库[设置_主动技能11在快捷栏].InitIndexEntry(设置_主动技能11在快捷栏,L"主动技能11在快捷栏",2,TRUE);
	DNF设置项数据库[设置_主动技能12在快捷栏].InitIndexEntry(设置_主动技能12在快捷栏,L"主动技能12在快捷栏",2,TRUE);
	DNF设置项数据库[设置_主动技能13在快捷栏].InitIndexEntry(设置_主动技能13在快捷栏,L"主动技能13在快捷栏",2,TRUE);
	DNF设置项数据库[设置_主动技能14在快捷栏].InitIndexEntry(设置_主动技能14在快捷栏,L"主动技能14在快捷栏",2,TRUE);
	DNF设置项数据库[设置_主动技能15在快捷栏].InitIndexEntry(设置_主动技能15在快捷栏,L"主动技能15在快捷栏",2,TRUE);
	DNF设置项数据库[设置_主动技能16在快捷栏].InitIndexEntry(设置_主动技能16在快捷栏,L"主动技能16在快捷栏",2,TRUE);
	DNF设置项数据库[设置_主动技能17在快捷栏].InitIndexEntry(设置_主动技能17在快捷栏,L"主动技能17在快捷栏",2,TRUE);
	DNF设置项数据库[设置_主动技能18在快捷栏].InitIndexEntry(设置_主动技能18在快捷栏,L"主动技能18在快捷栏",2,TRUE);
	DNF设置项数据库[设置_主动技能19在快捷栏].InitIndexEntry(设置_主动技能19在快捷栏,L"主动技能19在快捷栏",2,TRUE);
	DNF设置项数据库[设置_主动技能20在快捷栏].InitIndexEntry(设置_主动技能20在快捷栏,L"主动技能20在快捷栏",2,TRUE);

	DNF设置项数据库[设置_被动技能1等级].InitIndexEntry(设置_被动技能1等级,L"被动技能1等级",71);
	DNF设置项数据库[设置_被动技能2等级].InitIndexEntry(设置_被动技能2等级,L"被动技能2等级",71);
	DNF设置项数据库[设置_被动技能3等级].InitIndexEntry(设置_被动技能3等级,L"被动技能3等级",71);
	DNF设置项数据库[设置_被动技能4等级].InitIndexEntry(设置_被动技能4等级,L"被动技能4等级",71);
	DNF设置项数据库[设置_被动技能5等级].InitIndexEntry(设置_被动技能5等级,L"被动技能5等级",71);
	DNF设置项数据库[设置_被动技能6等级].InitIndexEntry(设置_被动技能6等级,L"被动技能6等级",71);
	DNF设置项数据库[设置_被动技能7等级].InitIndexEntry(设置_被动技能7等级,L"被动技能7等级",71);
	DNF设置项数据库[设置_被动技能8等级].InitIndexEntry(设置_被动技能8等级,L"被动技能8等级",71);
	DNF设置项数据库[设置_被动技能9等级].InitIndexEntry(设置_被动技能9等级,L"被动技能9等级",71);
	DNF设置项数据库[设置_被动技能10等级].InitIndexEntry(设置_被动技能10等级,L"被动技能10等级",71);
	for (int i=设置_被动技能1等级;i<=设置_被动技能10等级;i++)
		DNF设置项数据库[i].AddItemInfoBatch<int>(L"%d",0,1,71);

	//要求使用省略百分号的数值（实际值会除100）
	//默认值不支持区分职业，只能填0
	DNF设置项数据库[设置_职业Buff技能提升率].InitValueEntry(设置_职业Buff技能提升率,L"职业Buff技能提升率",1,0.0f);

	//护石列表使用带图标的DropList，3个护石选择互斥，默认值一定不能相同
	DNF设置项数据库[设置_护石1].InitIndexEntry(设置_护石1,L"护石1",1,0);
	DNF设置项数据库[设置_护石2].InitIndexEntry(设置_护石2,L"护石2",1,1);
	DNF设置项数据库[设置_护石3].InitIndexEntry(设置_护石3,L"护石3",1,2);

	//符文列表使用带图标的DropList
	DNF设置项数据库[设置_符文1].InitIndexEntry(设置_符文1,L"符文1",1);
	DNF设置项数据库[设置_符文2].InitIndexEntry(设置_符文2,L"符文2",1);
	DNF设置项数据库[设置_符文3].InitIndexEntry(设置_符文3,L"符文3",1);
	DNF设置项数据库[设置_符文4].InitIndexEntry(设置_符文4,L"符文4",1);
	DNF设置项数据库[设置_符文5].InitIndexEntry(设置_符文5,L"符文5",1);
	DNF设置项数据库[设置_符文6].InitIndexEntry(设置_符文6,L"符文6",1);
	DNF设置项数据库[设置_符文7].InitIndexEntry(设置_符文7,L"符文7",1);
	DNF设置项数据库[设置_符文8].InitIndexEntry(设置_符文8,L"符文8",1);
	DNF设置项数据库[设置_符文9].InitIndexEntry(设置_符文9,L"符文9",1);

	//符文颜色列表使用带图标的DropList，同一护石下的3种颜色互斥，默认值一定不能相同
	DNF设置项数据库[设置_符文1颜色].InitIndexEntry(设置_符文1颜色,L"符文1颜色",5,0);
	DNF设置项数据库[设置_符文2颜色].InitIndexEntry(设置_符文2颜色,L"符文2颜色",5,1);
	DNF设置项数据库[设置_符文3颜色].InitIndexEntry(设置_符文3颜色,L"符文3颜色",5,2);
	DNF设置项数据库[设置_符文4颜色].InitIndexEntry(设置_符文4颜色,L"符文4颜色",5,0);
	DNF设置项数据库[设置_符文5颜色].InitIndexEntry(设置_符文5颜色,L"符文5颜色",5,1);
	DNF设置项数据库[设置_符文6颜色].InitIndexEntry(设置_符文6颜色,L"符文6颜色",5,2);
	DNF设置项数据库[设置_符文7颜色].InitIndexEntry(设置_符文7颜色,L"符文7颜色",5,0);
	DNF设置项数据库[设置_符文8颜色].InitIndexEntry(设置_符文8颜色,L"符文8颜色",5,1);
	DNF设置项数据库[设置_符文9颜色].InitIndexEntry(设置_符文9颜色,L"符文9颜色",5,2);

	//当前几个职业特殊设置均使用CheckBox
	DNF设置项数据库[设置_奶妈特殊设置1].InitIndexEntry(设置_奶妈特殊设置1,L"奶妈特殊设置1",2,FALSE);
	DNF设置项数据库[设置_奶妈特殊设置1].SetJobSpecialFlag(职业_光明骑士女);
	DNF设置项数据库[设置_剑帝特殊设置1].InitIndexEntry(设置_剑帝特殊设置1,L"剑帝特殊设置1",2,FALSE);
	DNF设置项数据库[设置_剑帝特殊设置1].SetJobSpecialFlag(职业_流浪武士);



	//以下为条件
	//大部分使用DropList，这些使用CheckBox：药剂，怪物种族，怪物状态，自身异常状态，怪物异常状态
	DNF设置项数据库[设置_场景].InitIndexEntry(设置_场景,L"场景",DNF场景总数,0);
	DNF设置项数据库[设置_场景].AddItemIconInfo(L"修炼道场",RID_场景图标+0);
	DNF设置项数据库[设置_场景].AddItemIconInfo(L"巴卡尔攻坚战",RID_场景图标+1);
	DNF设置项数据库[设置_场景].AddItemIconInfo(L"雾神攻坚战",RID_场景图标+2);

	DNF设置项数据库[设置_怪物].InitIndexEntry(设置_怪物,L"怪物",DNF怪物总数,0);
	DNF设置项数据库[设置_怪物].AddItemIconInfo(怪物文本[0],RID_怪物图标+0);	//沙袋(140级)
	DNF设置项数据库[设置_怪物].AddItemIconInfo(怪物文本[1],RID_怪物图标+1);	//挑战沙袋(140级)
	DNF设置项数据库[设置_怪物].AddItemIconInfo(怪物文本[2],RID_怪物图标+2);	//巴卡尔(140级)
	DNF设置项数据库[设置_怪物].AddItemIconInfo(怪物文本[3],RID_怪物图标+3);	//雾神(140级)

	DNF设置项数据库[设置_药剂1].InitIndexEntry(设置_药剂1,L"斗神之吼秘药",2,FALSE);
	DNF设置项数据库[设置_药剂2].InitIndexEntry(设置_药剂2,L"顶级力量灵药",2,FALSE);
	DNF设置项数据库[设置_药剂3].InitIndexEntry(设置_药剂3,L"顶级智力灵药",2,FALSE);
	DNF设置项数据库[设置_药剂4].InitIndexEntry(设置_药剂4,L"赛利亚的特调酷饮",2,FALSE);
	DNF设置项数据库[设置_药剂5].InitIndexEntry(设置_药剂5,L"属性强化药剂",2,FALSE);
	DNF设置项数据库[设置_药剂6].InitIndexEntry(设置_药剂6,L"魔界战力释放秘药",2,FALSE);
	DNF设置项数据库[设置_药剂7].InitIndexEntry(设置_药剂7,L"魔界潜力释放秘药",2,FALSE);
	DNF设置项数据库[设置_药剂8].InitIndexEntry(设置_药剂8,L"火符咒",2,FALSE);
	DNF设置项数据库[设置_药剂9].InitIndexEntry(设置_药剂9,L"冰符咒",2,FALSE);
	DNF设置项数据库[设置_药剂10].InitIndexEntry(设置_药剂10,L"光符咒",2,FALSE);
	DNF设置项数据库[设置_药剂11].InitIndexEntry(设置_药剂11,L"暗符咒",2,FALSE);
	DNF设置项数据库[设置_药剂12].InitIndexEntry(设置_药剂12,L"天空之海符咒",2,FALSE);
	DNF设置项数据库[设置_药剂13].InitIndexEntry(设置_药剂13,L"强力的神奇针剂",2,FALSE);

	DNF设置项数据库[设置_出血触发频率].InitIndexEntry(设置_出血触发频率,L"角色出血触发CD",8,0);
	DNF设置项数据库[设置_出血触发频率].AddItemInfo(L"无出血触发能力");
	DNF设置项数据库[设置_出血触发频率].AddItemInfo(L"出血频率:3秒");
	DNF设置项数据库[设置_出血触发频率].AddItemInfo(L"出血频率:2.5秒");
	DNF设置项数据库[设置_出血触发频率].AddItemInfo(L"出血频率:2秒");
	DNF设置项数据库[设置_出血触发频率].AddItemInfo(L"出血频率:1.5秒");
	DNF设置项数据库[设置_出血触发频率].AddItemInfo(L"出血频率:1秒");
	DNF设置项数据库[设置_出血触发频率].AddItemInfo(L"出血频率:0.5秒");
	DNF设置项数据库[设置_出血触发频率].AddItemInfo(L"出血频率:0秒");
	
	DNF设置项数据库[设置_中毒触发频率].InitIndexEntry(设置_中毒触发频率,L"角色中毒触发CD",8,0);
	DNF设置项数据库[设置_中毒触发频率].AddItemInfo(L"无中毒触发能力");
	DNF设置项数据库[设置_中毒触发频率].AddItemInfo(L"中毒频率:3秒");
	DNF设置项数据库[设置_中毒触发频率].AddItemInfo(L"中毒频率:2.5秒");
	DNF设置项数据库[设置_中毒触发频率].AddItemInfo(L"中毒频率:2秒");
	DNF设置项数据库[设置_中毒触发频率].AddItemInfo(L"中毒频率:1.5秒");
	DNF设置项数据库[设置_中毒触发频率].AddItemInfo(L"中毒频率:1秒");
	DNF设置项数据库[设置_中毒触发频率].AddItemInfo(L"中毒频率:0.5秒");
	DNF设置项数据库[设置_中毒触发频率].AddItemInfo(L"中毒频率:0秒");

	DNF设置项数据库[设置_灼伤触发频率].InitIndexEntry(设置_灼伤触发频率,L"角色灼伤触发CD",8,0);
	DNF设置项数据库[设置_灼伤触发频率].AddItemInfo(L"无灼伤触发能力");
	DNF设置项数据库[设置_灼伤触发频率].AddItemInfo(L"灼伤频率:3秒");
	DNF设置项数据库[设置_灼伤触发频率].AddItemInfo(L"灼伤频率:2.5秒");
	DNF设置项数据库[设置_灼伤触发频率].AddItemInfo(L"灼伤频率:2秒");
	DNF设置项数据库[设置_灼伤触发频率].AddItemInfo(L"灼伤频率:1.5秒");
	DNF设置项数据库[设置_灼伤触发频率].AddItemInfo(L"灼伤频率:1秒");
	DNF设置项数据库[设置_灼伤触发频率].AddItemInfo(L"灼伤频率:0.5秒");
	DNF设置项数据库[设置_灼伤触发频率].AddItemInfo(L"灼伤频率:0秒");

	DNF设置项数据库[设置_感电触发频率].InitIndexEntry(设置_感电触发频率,L"角色感电触发CD",8,0);
	DNF设置项数据库[设置_感电触发频率].AddItemInfo(L"无感电触发能力");
	DNF设置项数据库[设置_感电触发频率].AddItemInfo(L"感电频率:3秒");
	DNF设置项数据库[设置_感电触发频率].AddItemInfo(L"感电频率:2.5秒");
	DNF设置项数据库[设置_感电触发频率].AddItemInfo(L"感电频率:2秒");
	DNF设置项数据库[设置_感电触发频率].AddItemInfo(L"感电频率:1.5秒");
	DNF设置项数据库[设置_感电触发频率].AddItemInfo(L"感电频率:1秒");
	DNF设置项数据库[设置_感电触发频率].AddItemInfo(L"感电频率:0.5秒");
	DNF设置项数据库[设置_感电触发频率].AddItemInfo(L"感电频率:0秒");

	DNF设置项数据库[设置_出血层数].InitIndexEntry(设置_出血层数,L"出血层数",11,0);
	DNF设置项数据库[设置_出血层数].AddItemInfoBatch<int>(L"出血层数:%d",1,1,11);

	DNF设置项数据库[设置_中毒层数].InitIndexEntry(设置_中毒层数,L"中毒层数",11,0);
	DNF设置项数据库[设置_中毒层数].AddItemInfoBatch<int>(L"中毒层数:%d",1,1,6);

	DNF设置项数据库[设置_感电层数].InitIndexEntry(设置_感电层数,L"感电层数",11,0);
	DNF设置项数据库[设置_感电层数].AddItemInfoBatch<int>(L"感电层数:%d",1,1,11);

	DNF设置项数据库[设置_控制型异常开关].InitIndexEntry(设置_控制型异常开关,L"控制型异常开关",2,0);
	DNF设置项数据库[设置_控制型异常开关].AddItemInfo(L"控制型异常:不生效");
	DNF设置项数据库[设置_控制型异常开关].AddItemInfo(L"控制型异常:生效");

	DNF设置项数据库[设置_控制型异常触发频率].InitIndexEntry(设置_控制型异常触发频率,L"控制型异常触发频率",8,0);
	DNF设置项数据库[设置_控制型异常触发频率].AddItemInfo(L"无控制触发能力");
	DNF设置项数据库[设置_控制型异常触发频率].AddItemInfo(L"控制触发频率:3秒");
	DNF设置项数据库[设置_控制型异常触发频率].AddItemInfo(L"控制触发频率:2.5秒");
	DNF设置项数据库[设置_控制型异常触发频率].AddItemInfo(L"控制触发频率:2秒");
	DNF设置项数据库[设置_控制型异常触发频率].AddItemInfo(L"控制触发频率:1.5秒");
	DNF设置项数据库[设置_控制型异常触发频率].AddItemInfo(L"控制触发频率:1秒");
	DNF设置项数据库[设置_控制型异常触发频率].AddItemInfo(L"控制触发频率:0.5秒");
	DNF设置项数据库[设置_控制型异常触发频率].AddItemInfo(L"控制触发频率:0秒");

	DNF设置项数据库[设置_HP范围].InitIndexEntry(设置_HP范围,L"HP范围",10,0);
	DNF设置项数据库[设置_HP范围].AddItemInfo(L"HP:90%以上");
	DNF设置项数据库[设置_HP范围].AddItemInfo(L"HP:80%~90%");
	DNF设置项数据库[设置_HP范围].AddItemInfo(L"HP:70%~80%");
	DNF设置项数据库[设置_HP范围].AddItemInfo(L"HP:60%~70%");
	DNF设置项数据库[设置_HP范围].AddItemInfo(L"HP:50%~60%");
	DNF设置项数据库[设置_HP范围].AddItemInfo(L"HP:40%~50%");
	DNF设置项数据库[设置_HP范围].AddItemInfo(L"HP:30%~40%");
	DNF设置项数据库[设置_HP范围].AddItemInfo(L"HP:20%~30%");
	DNF设置项数据库[设置_HP范围].AddItemInfo(L"HP:10%~20%");
	DNF设置项数据库[设置_HP范围].AddItemInfo(L"HP:10%以下");
	
	DNF设置项数据库[设置_MP范围].InitIndexEntry(设置_MP范围,L"MP范围",10,0);
	DNF设置项数据库[设置_MP范围].AddItemInfo(L"MP:90%以上");
	DNF设置项数据库[设置_MP范围].AddItemInfo(L"MP:80%~90%");
	DNF设置项数据库[设置_MP范围].AddItemInfo(L"MP:70%~80%");
	DNF设置项数据库[设置_MP范围].AddItemInfo(L"MP:60%~70%");
	DNF设置项数据库[设置_MP范围].AddItemInfo(L"MP:50%~60%");
	DNF设置项数据库[设置_MP范围].AddItemInfo(L"MP:40%~50%");
	DNF设置项数据库[设置_MP范围].AddItemInfo(L"MP:30%~40%");
	DNF设置项数据库[设置_MP范围].AddItemInfo(L"MP:20%~30%");
	DNF设置项数据库[设置_MP范围].AddItemInfo(L"MP:10%~20%");
	DNF设置项数据库[设置_MP范围].AddItemInfo(L"MP:10%以下");

	DNF设置项数据库[设置_队员数量].InitIndexEntry(设置_队员数量,L"队员数量",4,0);
	DNF设置项数据库[设置_队员数量].AddItemInfoBatch<int>(L"队员数量:%d",1,1,4);

	DNF设置项数据库[设置_怪物数量].InitIndexEntry(设置_怪物数量,L"怪物数量",10,0);
	DNF设置项数据库[设置_怪物数量].AddItemInfoBatch<int>(L"怪物数量:%d",1,1,10);

	DNF设置项数据库[设置_机械怪物].InitIndexEntry(设置_机械怪物,L"机械怪物",2,FALSE);
	DNF设置项数据库[设置_恶魔怪物].InitIndexEntry(设置_恶魔怪物,L"恶魔怪物",2,FALSE);
	DNF设置项数据库[设置_精灵怪物].InitIndexEntry(设置_精灵怪物,L"精灵怪物",2,FALSE);
	DNF设置项数据库[设置_天使怪物].InitIndexEntry(设置_天使怪物,L"天使怪物",2,FALSE);
	DNF设置项数据库[设置_龙族怪物].InitIndexEntry(设置_龙族怪物,L"龙族怪物",2,FALSE);
	DNF设置项数据库[设置_人型怪物].InitIndexEntry(设置_人型怪物,L"人型怪物",2,FALSE);
	DNF设置项数据库[设置_野兽怪物].InitIndexEntry(设置_野兽怪物,L"野兽怪物",2,FALSE);
	DNF设置项数据库[设置_植物怪物].InitIndexEntry(设置_植物怪物,L"植物怪物",2,FALSE);
	DNF设置项数据库[设置_不死怪物].InitIndexEntry(设置_不死怪物,L"不死怪物",2,FALSE);
	DNF设置项数据库[设置_昆虫怪物].InitIndexEntry(设置_昆虫怪物,L"昆虫怪物",2,FALSE);

	DNF设置项数据库[设置_普通敌人].InitIndexEntry(设置_普通敌人,L"普通敌人",2,FALSE);
	DNF设置项数据库[设置_稀有敌人].InitIndexEntry(设置_稀有敌人,L"稀有敌人",2,FALSE);
	DNF设置项数据库[设置_精英敌人].InitIndexEntry(设置_精英敌人,L"精英敌人",2,FALSE);
	DNF设置项数据库[设置_领主敌人].InitIndexEntry(设置_领主敌人,L"领主敌人",2,FALSE);
	DNF设置项数据库[设置_正面攻击].InitIndexEntry(设置_正面攻击,L"正面攻击",2,FALSE);
	DNF设置项数据库[设置_背面攻击].InitIndexEntry(设置_背面攻击,L"背面攻击",2,FALSE);
	DNF设置项数据库[设置_破招攻击].InitIndexEntry(设置_破招攻击,L"破招攻击",2,FALSE);
	DNF设置项数据库[设置_非破招攻击].InitIndexEntry(设置_非破招攻击,L"非破招攻击",2,FALSE);

	DNF设置项数据库[设置_自身出血状态].InitIndexEntry(设置_自身出血状态,L"自身出血状态",2,FALSE);
	DNF设置项数据库[设置_自身中毒状态].InitIndexEntry(设置_自身中毒状态,L"自身中毒状态",2,FALSE);
	DNF设置项数据库[设置_自身灼伤状态].InitIndexEntry(设置_自身灼伤状态,L"自身灼伤状态",2,FALSE);
	DNF设置项数据库[设置_自身感电状态].InitIndexEntry(设置_自身感电状态,L"自身感电状态",2,FALSE);
	DNF设置项数据库[设置_自身冰冻状态].InitIndexEntry(设置_自身冰冻状态,L"自身冰冻状态",2,FALSE);
	DNF设置项数据库[设置_自身减速状态].InitIndexEntry(设置_自身减速状态,L"自身减速状态",2,FALSE);
	DNF设置项数据库[设置_自身眩晕状态].InitIndexEntry(设置_自身眩晕状态,L"自身眩晕状态",2,FALSE);
	DNF设置项数据库[设置_自身诅咒状态].InitIndexEntry(设置_自身诅咒状态,L"自身诅咒状态",2,FALSE);
	DNF设置项数据库[设置_自身失明状态].InitIndexEntry(设置_自身失明状态,L"自身失明状态",2,FALSE);
	DNF设置项数据库[设置_自身石化状态].InitIndexEntry(设置_自身石化状态,L"自身石化状态",2,FALSE);
	DNF设置项数据库[设置_自身睡眠状态].InitIndexEntry(设置_自身睡眠状态,L"自身睡眠状态",2,FALSE);
	DNF设置项数据库[设置_自身混乱状态].InitIndexEntry(设置_自身混乱状态,L"自身混乱状态",2,FALSE);
	DNF设置项数据库[设置_自身束缚状态].InitIndexEntry(设置_自身束缚状态,L"自身束缚状态",2,FALSE);

	DNF设置项数据库[设置_怪物出血状态].InitIndexEntry(设置_怪物出血状态,L"怪物出血状态",2,FALSE);
	DNF设置项数据库[设置_怪物中毒状态].InitIndexEntry(设置_怪物中毒状态,L"怪物中毒状态",2,FALSE);
	DNF设置项数据库[设置_怪物灼伤状态].InitIndexEntry(设置_怪物灼伤状态,L"怪物灼伤状态",2,FALSE);
	DNF设置项数据库[设置_怪物感电状态].InitIndexEntry(设置_怪物感电状态,L"怪物感电状态",2,FALSE);
	DNF设置项数据库[设置_怪物冰冻状态].InitIndexEntry(设置_怪物冰冻状态,L"怪物冰冻状态",2,FALSE);
	DNF设置项数据库[设置_怪物减速状态].InitIndexEntry(设置_怪物减速状态,L"怪物减速状态",2,FALSE);
	DNF设置项数据库[设置_怪物眩晕状态].InitIndexEntry(设置_怪物眩晕状态,L"怪物眩晕状态",2,FALSE);
	DNF设置项数据库[设置_怪物诅咒状态].InitIndexEntry(设置_怪物诅咒状态,L"怪物诅咒状态",2,FALSE);
	DNF设置项数据库[设置_怪物失明状态].InitIndexEntry(设置_怪物失明状态,L"怪物失明状态",2,FALSE);
	DNF设置项数据库[设置_怪物石化状态].InitIndexEntry(设置_怪物石化状态,L"怪物石化状态",2,FALSE);
	DNF设置项数据库[设置_怪物睡眠状态].InitIndexEntry(设置_怪物睡眠状态,L"怪物睡眠状态",2,FALSE);
	DNF设置项数据库[设置_怪物混乱状态].InitIndexEntry(设置_怪物混乱状态,L"怪物混乱状态",2,FALSE);
	DNF设置项数据库[设置_怪物束缚状态].InitIndexEntry(设置_怪物束缚状态,L"怪物束缚状态",2,FALSE);
}














